c++ - Tesseract OCR 未正确将文本拆分为不同的结果集
问题描述
我需要你的帮助。我试图将下面图像上的电子邮件作为单独的结果和它们的边界框分别获取。不知何故,Tesseract OCR 不会将它们识别为单独的行并将它们作为单个结果返回。
电流输出 - 一个块
Top: 182, Bottom: 512, Left: 533, Right: 852 -
BCF6CC517E7642BBB21AAF2068E54C28 - Test
D4852831D8CA439EB9D98B54629D1840 - Test
8DFFDO6FA3B44989B224DABDD9292B3E - Test
10E1D83F0D834000AF7BDSDEA48442E8 - Test
6FOA122825AA42159FDEESEBFFAC279B - Test
E719274DA1CE46ADASBDB659812ED684 - Test
ES18EE9D7D7B4AA3ABAT81523F748B24 - Test
?0304b4b-ba1d-4897-8ebe-20bcc3930201 - Test
2ebad2h1-c385-4d84-96c7-bc9082141e1c - Test
所需输出 - 每个 GUID 多个块
Top: 182, Bottom: 210, Left: 533, Right: 852 -
BCF6CC517E7642BBB21AAF2068E54C28 - Test
Top: 210, Bottom: 230, Left: 533, Right: 852 -
D4852831D8CA439EB9D98B54629D1840 - Test
Top: 230, Bottom: 250, Left: 533, Right: 852 -
8DFFDO6FA3B44989B224DABDD9292B3E - Test
...
我已经尝试了大部分 OcrEngineMode 和 PageSegmentationMode。没有什么能正确解决。我还将图像从 96 DPI 缩放到 300 DPI。没有帮助。我也浏览了文档,但找不到解决方案。
我正在使用 Tesseract 4
提前感谢您的时间和帮助。
解决方案
迭代结果时,您应该将 PageIteratorLevel 设置为
RIL_TEXTLINE,以便它可以将结果段落拆分为单独的行。
var resultIterator = tessBaseAPI.GetIterator();
var pageIteratorLevel = PageIteratorLevel.RIL_TEXTLINE;