有没有办法将 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 用于个位数?的主要内容,如果未能解决你的问题,请参考以下文章