有没有办法将 tesseract 用于个位数?

Posted

技术标签:

【中文标题】有没有办法将 tesseract 用于个位数?【英文标题】:Is there a way to use tesseract for single digit numbers? 【发布时间】:2015-02-19 06:45:44 【问题描述】:

TL;DR tesseract 似乎无法识别由单个数字组成的图像。是否有解决方法/原因?

我正在使用 tesseract(仅数字版本)自动将发票输入系统。但是,我注意到 tesseract 似乎无法识别单个数字,如下所示:

裁剪后的原始扫描是:

在我做了一些图像增强后:

如果它至少有两个数字,它就可以正常工作:

我已经测试了其他几个数字:

不工作: , ,

工作: , ,

如果有帮助,出于我的目的,对 tesseract 的所有输入都已像上面一样被裁剪和旋转。我使用 pyocr 作为我的项目和 tesseract 之间的桥梁。

【问题讨论】:

【参考方案1】:

以下是配置 pyocr 以识别单个数字的方法:

from PIL import Image
import sys
import pyocr
import pyocr.builders

tools = pyocr.get_available_tools()
if len(tools) == 0:
    print("No OCR tool found")
    sys.exit(1)
tool = tools[0]

im = Image.open('digit.png')
builder = pyocr.builders.DigitBuilder()

# Set Page Segmentation mode to Single Char :
builder.tesseract_layout = 10 # If tool = tesseract
builder.tesseract_flags = ['-psm', '10'] # If tool = libtesseract

result = tool.image_to_string(im, lang="eng", builder=builder)

【讨论】:

【参考方案2】:

单个数字的处理方式与其他字符相同,因此更改页面分割模式应该有助于正确拾取数字。

另请参阅: Tesseract does not recognize single characters

【讨论】:

我可以请您在这里查看一个与 Tesseract 相关的问题:***.com/questions/66946835/… 吗?【参考方案3】:

PageSegMode 设置为PSM_SINGLE_CHAR

【讨论】:

以上是关于有没有办法将 tesseract 用于个位数?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法用小字体改进 tesseract OCR?

tesseract 的 OCR 结果高度不一致

用于英文手写文本的 Tesseract 4.0

在android上使用tesseract [关闭]

如何将 tessdata_best 用于 tesseract (pytesseract)。论据和程序是啥?

有没有办法将 8bitX32 ymm 寄存器右/左洗牌 N 个位置(c++)