我们有一个C#.Net应用程序,它使用Tesseract在.tiff文件上进行光学字符识别(OCR)。这是一个例子:
然后我们将数据输出到文本文件。但是,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选项,但它们都会产生相同的结果。
有没有人遇到同样的问题?有人有什么想法吗?
答案 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;