Tesseract OCR水平读取而不是垂直读取C#

时间:2017-04-06 15:36:32

标签: c# ocr tesseract

我们有一个C#.Net应用程序,它使用Tesseract在.tiff文件上进行光学字符识别(OCR)。这是一个例子: Example tiff fiel that Tesseract reads

然后我们将数据输出到文本文件。但是,Tesseract正在以垂直方式读取数据。在我的示例图像中,它正在读取tiff作为两列数据和数据从Tesseract输出的数据如下:

TYPE: 日期: 地址: 市: 州: 所有者: 所有者类型: 面积: 抵押: 12345 2017年4月6日 100 Main St. 一些城市 一些国家 约翰·多伊 主 10.25 是

我们想要的是Tesseract水平读取tiff文件并使输出看起来像这样:

TYPE:12345 日期:2017年4月6日 地址:100 Main St. 城市:一些城市 州:某州 所有者:John Doe 所有者类型:主要 面积:10.25 抵押:是

我们尝试过Tesseract的各种Page Sementation选项,但它们都会产生相同的结果。

有没有人遇到同样的问题?有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。 Tesseract有一组配置文件。其中几个配置文件中的设置是 tessedit_pageseg_mode 。在所有配置文件中将此设置设置为1。 1=Automatic page segmentation with OSD. OSD=Orientation and script detection.

最重要的是,这些配置文件设置覆盖了我们的命令行参数。从配置文件中删除 tessedit_pageseg_mode 参数后,我们的命令行参数为

-psm 6 以所需格式工作并生成输出数据。

psm=Page Segmentation Mode. 6=Assume a single uniform block of text

-psm 4 也有效

psm=Page Segmentation Mode. 4=Assume a single column of text of variable sizes

答案 1 :(得分:0)

我知道这是一篇老文章,但是今天我遇到了同样的问题。

使用engine.SetVariable("tessedit_pageseg_mode", 6);设置分段模式无效。

由于某种原因,我没有在配置文件中找到它。

解决方案:

engine.DefaultPageSegMode = PageSegMode.SingleBlock;