Тессеракт возвращает гиббери sh при выполнении оптического распознавания изображения - PullRequest
1 голос
/ 28 января 2020

Я пытаюсь использовать Tesseract для чтения изображения, но он возвращает gibberi sh. Я знаю, что мне нужно выполнить некоторую предварительную обработку, но то, что я нашел в Интернете, похоже, не работает с моим изображением. Я попытался этот ответ, чтобы превратить картинку из черного фона / белые буквы в белый фон / черные буквы без успеха.

Это изображение.

image

И мой простой код:

from PIL import Image
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r'D:\Tesseract-OCR\tesseract'

img = Image.open("2020-01-25_17-57-49_UTC.jpg")
print(pytesseract.image_to_string(img))

Ответы [ 2 ]

2 голосов
/ 28 января 2020

Код кобблинга, найденный здесь на SO

from PIL import Image
import PIL.ImageOps
import pytesseract

img = Image.open("8pjs0.jpg")
inverted_image = PIL.ImageOps.invert(img)
print(pytesseract.image_to_string(inverted_image))

, дает мне

Dolar Hoy en Cucuta

25-Enero-20
01:00PM

78.048
VENTA

Я думаю, вам понадобятся языковые пакеты для акцентированных символов.

0 голосов
/ 28 января 2020

Простой порог Оцу для получения двоичного изображения, а затем инверсия для получения букв черного цвета и фона в белом, кажется, работает. Мы используем --psm 3, чтобы указать Pytesseract на автоматическую сегментацию страницы c. Взгляните на Несколько вариантов конфигурации Pytesseract OCR для получения дополнительных параметров конфигурации. Вот предварительно обработанное изображение

image

Результат от оптического распознавания символов Pytesseract

Dolar Hoy en Cucuta

25-Enero-20
01:00PM

78.048
VENTA

Код

import cv2
import numpy as np
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

# Load image, grayscale, threshold, invert
image = cv2.imread('1.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
result = 255 - thresh

# Perfrom OCR with Pytesseract
data = pytesseract.image_to_string(result, config='--psm 3')
print(data)

cv2.imshow('result', result)
cv2.waitKey()
...