python - Tesseract/PYOCR 将 'Z' 检测为 '2'

标签 python opencv ocr tesseract

我正在为我的应用程序使用 pyocr ( https://github.com/openpaperwork/pyocr ),除了以下情况外,它一切正常:

从此图像:

enter image description here

Tesseract 将提取:

42Z8

它检测到其中一个 Z,但检测不到另一个“Z”,这一点很重要,因为该数字通过了验证,如果发生此问题,验证就会失败。

我尝试过的事情:

  1. 在 tesseract 中使用字体 (flama) .traineddata 文件,未修复。
  2. 像图片一样隔离 block ,可以看到检测效果更好。
  3. 进行一些图像处理,例如:

thresh = cv.threshold(blocktext, 127, 255, cv.THRESH_BINARY)

我该如何解决这个问题?也许解决方案是一些更复杂的图像处理,但我现在有点迷失。

谢谢。

更新图片:

enter image description here

最佳答案

我使用了pytesseract、tesseract 4.0 和 tessdata_best

import pytesseract
import cv2

pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe'

img = cv2.imread('4zz8.png')

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
adaptiveThresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 15, 12)

config = '-l eng --oem 1 --psm 3'
text = pytesseract.image_to_string(adaptiveThresh, config=config)

print("Result: " + text)

cv2.imshow('original', img)
cv2.imshow('adaptiveThresh', adaptiveThresh)

cv2.waitKey(0)

result

输出为:

Result: 4 ZZ8

关于python - Tesseract/PYOCR 将 'Z' 检测为 '2',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56885443/

相关文章:

python - 具有DNN的OpenCv

python - 如何删除不需要的阈值扩展?

iphone - 如何为iPhone交叉编译tesseract ocr引擎?

ocr - Tesseract Ocr引擎多维数据集模式-培训Tesseract

linux - 如何在 Ubuntu/Linux 发行版中安装 Tesseract-OCR 3.03?

python - 如何获取导致 any() 返回 True 的值?

python - 使用正则表达式从一堆字符串中解析日期和时间

python - 如何修复 Graphite 中的守护进程导入错误?

Python + Selenium : How can click on "onclick" elements?

c++ - 用opencv着色