Извлечь цифру из шумного изображения - PullRequest
0 голосов
/ 23 октября 2019

Извлечь цифру из шумного изображения

Я хочу извлечь текст из изображения, полученного с помощью камеры мобильного телефона. Во-первых, я пытаюсь преобразовать изображение в оттенки серого, используя этот код:

imgg = Image.open('originale.jpg').convert('LA')

Во-вторых, я пытаюсь портировать серое изображение, чтобы получить изображение только с черным и белым с этим кодом: *

 retval, threshold = cv2.threshold(grayscaled, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
cv2.imwrite("threshold.png", threshold)

В-третьих, я пытаюсь извлечь текст с помощью pytesseract, но у меня неправильный результат с этим кодом.

result5 = pytesseract.image_to_string(Image.open("threshold.png"))

Это изображение, которое я хочу извлечь из числа цифр, например: Мой ожидаемый результат:111 2 11 4 1 23 2 3.

и это мое изображение:

originale.jpg

threshold.png

А это мой полный код:

import cv2
import numpy as np
import pytesseract
from PIL import Image
img = cv2.imread('originale.jpg')
grayscaled = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
retval, threshold = cv2.threshold(grayscaled, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
cv2.imwrite("threshold.png", threshold)
result = pytesseract.image_to_string(Image.open("threshold.png"))
print(result)

1 Ответ

0 голосов
/ 24 октября 2019

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

import cv2

img # this is your original image
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
retval, threshold = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
cv2.imwrite("threshold.png", threshold)

Результат: enter image description here

...