Pytesseract не обнаруживает текст должным образом в случае заполнения - PullRequest
0 голосов
/ 28 октября 2018

Я использую pytesseract для извлечения текста из изображений.Иногда он не может отправлять текст с изображений, где между текстом и границей не осталось места.Чтобы решить эту проблему, я использовал отступы, т.е. добавил дополнительные пиксели (белые), чтобы увеличить границу.Изображение, которое я использую, показано ниже:

image

Но проблема заключается в том, что pytesseract работает только с определенными отступами, т.е. больше или меньшечем это не будет плодотворным.Теперь, чтобы найти оптимальное дополнение для каждого изображения, отнимает много времени.

Мой вопрос таков:

  1. Почему больше, чем требуется, заполнение делает вещи плохими.Как использовать pytesseract или другую альтернативу для эффективного извлечения текста из всех изображений.

Мой код:

`
import os
from PIL import Image
import pytesseract as pt
import numpy as np
import cv2
from matplotlib import pyplot as plt
%matplotlib inline

im= cv2.imread('path_to_image')
h, w = im.shape[0], im.shape[1]
print('string: ',pt.image_to_string(im,lang='eng'))
s=2
im = cv2.copyMakeBorder(im,s,s,s,s,borderType= cv2.BORDER_CONSTANT,value=[255,255,255])
plt.imshow(im,cmap='gray')
plt.show()

boxes = pt.image_to_boxes(im,lang='eng')   # config='--psm 8'
print(boxes)
for b in boxes.splitlines():
    b = b.split(' ')
    x1 = h - int(b[2])
    y1 = int(b[1])
    x2 = h - int(b[4])
    y2 = int(b[3])

    start_color = im[x1-1,y1-1]
    end_color = im[x2+1,y2+1]
    color_to_fill = start_color/2  + end_color/2

    im = cv2.rectangle(im, (y1,x1), (y2,x2), color_to_fill, cv2.FILLED)                    


plt.imshow(im,cmap='gray')
plt.show()

РЕДАКТИРОВАТЬ: У меня естьЕще одна проблема, которая иногда дает какой-то странный результат, как показано ниже.Изображение имеет четкий текст, но pytesseract не может его обнаружить, и выходная строка пуста.Но он также дает ограничивающую рамку (сокращенно boxes в коде), которая при заполнении приводит к полному белому изображению.

enter image description here

`

...