Tesseract 无法识别单个字符

问题描述 投票:0回答:5

如何表示:

  1. 用颜料创建新图像(任何尺寸)
  2. 将字母 A 添加到此图像
  3. 尝试识别 -> tesseract 将找不到任何字母
  4. 将此字母复制粘贴至此图像 5-6 次
  5. 尝试识别 -> tesseract 会找到所有字母

为什么?

ocr tesseract
5个回答
25
投票

必须将“分页模式”设置为“单字符”。

例如,在 Android 中,您可以执行以下操作:

api.setPageSegMode(TessBaseAPI.pageSegMode.PSM_SINGLE_CHAR);

16
投票

执行该配置的Python代码如下:

import pytesseract
import cv2
img = cv2.imread("path to some image")
pytesseract.image_to_string(
     img, config=("-c tessedit"
                  "_char_whitelist=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
                  " --psm 10"
                  " -l osd"
                  " "))

--psm
标志定义页面分段模式。

根据 tesseract 的文档,

10
的意思是:

将图像视为单个字符。

因此要识别单个字符,您只需要使用:

--psm 10
标志。


10
投票

需要将Tesseract的页面分割模式设置为“单个字符”。


7
投票

你见过这个吗?

https://code.google.com/p/tesseract-ocr/issues/detail?id=581

错误列表将其显示为“不再是问题”。

  • 一定要有高分辨率的图像。
  • 如果您要调整图像大小,请务必保持高 DPI 并且不要调整得太小
  • 一定要训练你的超立方体系统
  • baseApi.setVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
     之前使用 
    init Tesseract
  • 代码
  • 此外,您还可以查看 OCR 使用哪种字体

0
投票

其他选项是,如果

PageSegMode.SingleChar
仍然不起作用,减少图像的颜色(例如二值化),然后使用
PageSegMode.SingleChar

© www.soinside.com 2019 - 2024. All rights reserved.