Тессеракт / PYOCR определяет 'Z' как '2' - PullRequest
0 голосов
/ 04 июля 2019

Я использую pyocr (https://github.com/openpaperwork/pyocr) для моего приложения, все работает хорошо, за исключением следующего:

Из этого изображения:

enter image description here

Тессеракт будет извлекать:

42Z8

Он обнаруживает один из Z, но не другой Z, это важно, потому что это число проходит проверку, которая не проходит, если возникает эта проблема.

Вещи, которые я пробовал:

  1. Использование файла шрифта (flama) .traineddata с tesseract, не исправлено.
  2. Изолируйте блок как изображение, чтобы увидеть, что обнаружение было лучше.
  3. Выполнение обработки изображения, например:

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

Как я могу это исправить? Возможно, решение состоит в более сложной обработке изображений, но сейчас я немного растерялся.

Спасибо.

Обновленное изображение:

enter image description here

1 Ответ

0 голосов
/ 04 июля 2019

Я использовал pytesseract, tesseract 4.0 and 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
...