Как извлечь цифры или цифры с помощью OCR в Python - PullRequest
2 голосов
/ 07 ноября 2019

Я пытаюсь извлечь числа с помощью OCR.

Средой разработки управляет pycharm (Python версии 3).

Моя проблема заключается в том, как извлечь числа с помощью OCR.

Изображение выглядит следующим образом:

Input image

На рисунке выше я хочу получить следующий числовой текст:

1 2   3
4 5 6 7
8 9   0

Как я могу получитьрезультаты, которые я хочу?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Вы можете порог Оцу получить двоичное изображение, а затем извлечь каждое число. После порогового значения мы получаем

enter image description here

Теперь мы перебираем контуры и извлекаем / сохраняем каждый ROI

enter image description here

Теперь вы можете применить желаемый инструмент OCR, чтобы прочитать текст на каждой области интереса

import cv2

image = cv2.imread('1.jpg', 0)
thresh = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

cnts = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c, num in zip(cnts, range(len(cnts))):
    x,y,w,h = cv2.boundingRect(c)
    ROI = 255 - thresh[y:y+h, x:x+w]
    cv2.imwrite('ROI_{}.png'.format(num), ROI)

cv2.imshow('thresh', 255 - thresh)
cv2.waitKey()
0 голосов
/ 07 ноября 2019

Существует ряд библиотек для достижения этой цели. Вот пример из: https://pypi.org/project/pytesseract/ https://github.com/madmaze/pytesseract

try:
    from PIL import Image
except ImportError:
    import Image
import pytesseract

# If you don't have tesseract executable in your PATH, include the following:
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# Example tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract'

# Simple image to string
print(pytesseract.image_to_string(Image.open('test.png')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...