【问题标题】:Tesseract - ambiguity in space and tabTesseract - 空格和制表符的歧义
【发布时间】:2013-08-06 19:39:47
【问题描述】:

我有一个 tiff 文件,其中包含一些由制表符分隔的文本(4 个空格)。但是当我从这个 tiff 图像文件中提取文本时,我总是在两列之间得到一个空格。一个示例:

TIFF IMAGE:
col-a    col-b    col-c

desired output:
col-a    col-b    col-c

but I am getting the following:
col-a col-b col-c

我尝试了多张相同格式的图像,但结果始终相同。 我该如何解决这个问题?我可以训练 tesseract 来理解这一点吗?

【问题讨论】:

    标签: ocr tesseract


    【解决方案1】:

    经过很长时间的研究,我找到了解决方案。 以下是要遵循的步骤

    1. 将您的 tesseract 升级到 3.04

    2. 创建config.txt(在输入图片文件的目录下创建文件)

    3. 在配置文件中定义“preserve_interword_spaces

    4. 工作后preserve_interword_spaces 给出 0 或 1。 例如:

    preserve_interword_spaces 0

    preserve_interword_spaces 1

    1. 测试和干杯!!!

    【讨论】:

    • 经过测试并在 3.05 中工作,但不会保留初始间距(第一个字符的左侧)。需要进行一些额外的处理才能在每列左侧插入一个虚假字符,然后在后期处理中将其删除。
    【解决方案2】:

    Tesseract 将连续的空格压缩为一个。您需要修改 baseapi.cpp 以保留空格。代码更改可以在以下帖子中找到:

    https://groups.google.com/forum/#!searchin/tesseract-ocr/spaces/tesseract-ocr/lGBQiryHcrY/wy5a-L9O3i4J

    https://groups.google.com/forum/#!searchin/tesseract-ocr/spaces/tesseract-ocr/9nzPrBZ3118/b3W5GtsFPo0J

    【讨论】:

    • 我不是 C++ 程序员。我无法在 vs 2005 中打开项目,并且我没有 vs 2008 来编译更改。如何获取编译好的库?
    • 您仍然可以获得 VC++ 2008 Express。 stackoverflow.com/questions/15318560/…
    • @nguyenq : GetUtf8Text 函数的代码在baseapi.cpp 模块中发生了变化,你能解释一下如何在当前安装的 tesseract-ocr 中实现相同的代码
    • 添加了对preserve_interword_spaces变量的支持,无需修改源代码。
    • @nguyenq :但是,-c preserve_interword_spaces=1 通过 命令行 的选项对 右对齐 文本没有帮助,它转换为左对齐,如 answer 中给出的。此外,表格数据列几乎是连接在一起的,我希望这些列看起来分开且不同以方便查看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2013-08-10
    相关资源
    最近更新 更多