F
F
fantom_ask2020-09-02 11:24:35
Python
fantom_ask, 2020-09-02 11:24:35

How to get text from an image?

Please advise modules for getting text from an image.
It is desirable with a working example so that I can immediately check the quality of receiving the text.
Pictures example
5f4f55b6b40e1250070060.png
5f4f55c270024095200575.png
5f50cbcecd8f1747368568.png

Answer the question

In order to leave comments, you need to log in

3 answer(s)
V
Vladimir Kuts, 2020-09-02
@fantom_ask

pytesseract

F
fantom_ask, 2020-09-03
@fantom_ask

I created a test version of the code

from PIL import Image
import pytesseract
import cv2
import os

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

base_dir = os.path.dirname(os.path.abspath(__file__))
image = base_dir + r'\tmp\test.PNG'
d = Image.open(image)
preprocess = "thresh"

# загрузить образ и преобразовать его в оттенки серого
image = cv2.imread(image)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# проверьте, следует ли применять пороговое значение для предварительной обработки изображения

if preprocess == "thresh":
    gray = cv2.threshold(gray, 0, 255,
        cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

# если нужно медианное размытие, чтобы удалить шум
elif preprocess == "blur":
    gray = cv2.medianBlur(gray, 3)

# сохраним временную картинку в оттенках серого, чтобы можно было применить к ней OCR
filename_dir = base_dir +"\gray\{}.png".format(os.getpid())
cv2.imwrite(filename_dir, gray)

# загрузка изображения в виде объекта image Pillow, применение OCR, а затем удаление временного файла
text = pytesseract.image_to_string(Image.open(filename_dir))
print(text)
os.remove(filename_dir)

# показать выходные изображения
cv2.imshow("Image", image)
cv2.imshow("Output", gray)

The result
5f50cc8ba1301234189151.png
5f50cc957de78831806609.png
is fright, tine to put the old girl to work.
But the result is the same.

R
Ramis, 2020-09-02
@ramzis

Meet Adrian and here is a list of his articles with examples

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question