Задать вопрос
@naruto_hokagi

Как извлечь текст из изображения?

Стала необходимость прочитать текст из картинки, кто-нибудь может помочь с этим вопросом на питоне? Возможно ли сделать это без использования нейронки? Вариант с tesseract OCR не рассматривается, потому что он не распознает русский текст, да и инглиш не всегда.
Буду благодарен за помощь
  • Вопрос задан
  • 1711 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 4
dimonchik2013
@dimonchik2013
non progredi est regredi
замени tesseract finereaderом
Ответ написан
Комментировать
delvin-fil
@delvin-fil
Crazy Linux-admin
С каких пор тесса перестала распознавать русский?
Из истории bash:
46367  апр 10 05:13:30 tesseract Screenshot_2017-04-09-22-41-27.png prog -l rus+eng
Ответ написан
Bastax13
@Bastax13
Если вы мазохист, можете написать свой распознаватель на OpenCV
Ответ написан
@zoldaten
вот, от мазохистов.

# python ocr.py --image example_01.png

# import the necessary packages
from PIL import Image
import pytesseract
import argparse
import cv2
import os

# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
help="path to input image to be OCR'd")
ap.add_argument("-p", "--preprocess", type=str, default="thresh",
help="type of preprocessing to be done")
args = vars(ap.parse_args())

# load the example image and convert it to grayscale
image = cv2.imread(args["image"])
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# check to see if we should apply thresholding to preprocess the
# image
if args["preprocess"] == "thresh":
gray = cv2.threshold(gray, 0, 255,
cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

# make a check to see if median blurring should be done to remove
# noise
elif args["preprocess"] == "blur":
gray = cv2.medianBlur(gray, 3)

# write the grayscale image to disk as a temporary file so we can
# apply OCR to it
filename = "{}.png".format(os.getpid())
cv2.imwrite(filename, gray)
# load the image as a PIL/Pillow image, apply OCR, and then delete
# the temporary file
text = pytesseract.image_to_string(Image.open(filename))
os.remove(filename)
print(text)

# show the output images
cv2.imshow("Image", image)
cv2.imshow("Output", gray)
cv2.waitKey(0)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽