Распознавание изображений Pytesseract - цифры не распознаны - PullRequest
0 голосов
/ 09 марта 2020

У меня есть это изображение.

enter image description here

Запуск Pytesseract с python 3.8 вызвал следующую проблему:

  1. слово «телефон» читается как O (не ноль, O как в оскаре)
  2. слово «факс» читается как 2%.
  3. номер телефона читается как (56031770

Рассматриваемое изображение не содержит блоков. Эти поля берутся из вывода cv2 после применения полей вокруг обнаруженных текстовых областей / слов.

Номер факса читается без проблем. (866)357-7704 (включая скобки и дефис)

Размер изображения составляет 23 мегапикселя (преобразовано из файла PDF). Изображение было предварительно обработано с порогом в opencv, так что вы получите двоичное изображение Изображение не содержит жирных шрифтов. Поэтому я не использовал эрозию.

Что я могу сделать, чтобы правильно прочитать номер телефона? Спасибо.

PS: я использую image_to_data (не image_to_text), так как мне нужно было бы знать расположение полосы ngs на странице.

Редактировать: вот соответствующая часть кода:

from PIL import Image
import pytesseract
from pytesseract import Output
import argparse
import cv2
import os
import numpy as np
import math
from pdf2image import convert_from_path 
from scipy.signal import convolve2d
import string

filename = "image.png"
image = cv2.imread(filename)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# estimate noise on image
H, W = gray.shape
M = [[1, -2, 1],
    [-2, 4, -2],
    [1, -2, 1]]

sigma = np.sum(np.sum(np.absolute(convolve2d(gray, M))))
sigma = sigma * math.sqrt(0.5 * math.pi) / (6 * (W-2) * (H-2))

# if image has too much noise then go with blurring method

if sigma > 10 :
    # noisy
    gray = cv2.medianBlur(gray, 3)
    print("noises deblurred")
# otherwise go with threshholding method
else :
    gray = cv2.threshold(gray, 0, 255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
    print("threshhold applied")


d = pytesseract.image_to_data(gray, output_type=Output.DICT)
for t in d['text'] :
    print(t)

Таким образом, это будет psm 3 (по умолчанию)

Версия:

Тессеракт: тессеракт 4.1.1 (получен с tesseract --version) и pytessract: Версия: 0.3.2 (получен с pip3 show pytesseract)

...