我正在为我的应用程序使用 pyocr ( https://github.com/openpaperwork/pyocr ),除了以下情况外,它一切正常:
从此图像:
Tesseract 将提取:
42Z8
它检测到其中一个 Z,但检测不到另一个“Z”,这一点很重要,因为该数字通过了验证,如果发生此问题,验证就会失败。
我尝试过的事情:
- 在 tesseract 中使用字体 (flama) .traineddata 文件,未修复。
- 像图片一样隔离 block ,可以看到检测效果更好。
- 进行一些图像处理,例如:
thresh = cv.threshold(blocktext, 127, 255, cv.THRESH_BINARY)
我该如何解决这个问题?也许解决方案是一些更复杂的图像处理,但我现在有点迷失。
谢谢。
更新图片:
最佳答案
我使用了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: 4 ZZ8
关于python - Tesseract/PYOCR 将 'Z' 检测为 '2',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56885443/