有没有办法将tesseract用于单位数字?

时间:2014-12-20 14:29:38

标签: tesseract

  

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

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

裁剪后的原始扫描是:

enter image description here

我做了一些图像增强后:

enter image description here

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

enter image description here enter image description here

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

不工作: enter image description hereenter image description hereenter image description here

工作: enter image description hereenter image description hereenter image description here

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

3 个答案:

答案 0 :(得分:3)

以下是如何配置 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)

答案 1 :(得分:1)

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

另见: Tesseract does not recognize single characters

答案 2 :(得分:0)

PageSegMode设置为PSM_SINGLE_CHAR