Tesseract OCR如何水平读取文本而不是垂直的? (C#)

3
我们有一个使用Tesseract进行光学字符识别(OCR)的C# .Net应用程序,可用于.tiff文件。以下是一个示例: Example tiff fiel that Tesseract reads 然后我们将数据输出到文本文件中。但是,Tesseract以竖直方式阅读数据。在我的示例图像中,它将tiff文件读取为两列数据,并且数据被从Tesseract输出,如下所示:
类型: 日期: 地址: 城市: 州: 所有者: 所有者类型: 面积: 抵押贷款: 12345 2017-04-06 100 Main St. Some City Some State John Doe Primary 10.25 Yes
我们希望Tesseract水平读取tiff文件,并使输出如下所示:
类型:12345 日期:2017-04-06 地址:100 Main St. 城市:Some City 州:Some State 所有者:John Doe 所有者类型:Primary 面积:10.25 抵押贷款:Yes
我们尝试了Tesseract的各种页面分割选项,但它们都产生了相同的结果。
是否有人遇到了这个问题?有人有什么想法吗?
3个回答

2
最初的回答: 我知道这是一个旧帖子,但今天我遇到了同样的问题。使用engine.SetVariable("tessedit_pageseg_mode", 6);设置分割模式没有起作用。而且出于某种原因,我在配置文件中也没有找到它。 解决方案:
engine.DefaultPageSegMode = PageSegMode.SingleBlock;

2
我找到了一个解决方案。Tesseract有一组配置文件。在几个配置文件中,有一个名为tessedit_pageseg_mode的设置。所有配置文件中都将此设置设置为1。1=带OSD的自动页分割。OSD=方向和脚本检测。 简而言之,这些配置文件设置覆盖了我们的命令行参数。一旦我从配置文件中删除了tessedit_pageseg_mode参数,我们的命令行参数-psm 6便可以正常工作,并且生成所需格式的输出数据。 psm=页面分割模式。6=假定单个统一文本块也可以正常工作。 -psm 4同样有效。 psm=页面分割模式。4=假定变量大小的单列文本

0
在C#中,代码将会是这样的:
using var input = new OcrInput(somePdfStream);
var config = new TesseractConfiguration() { PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock };
var result = new IronTesseract(config).Read(input);
var text = result.Text;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接