Есть ли способ извлечь из изображения только нужный текст? - PullRequest
0 голосов
/ 17 апреля 2020

Я работаю над проектом, в котором я пытаюсь извлечь название лекарства, просто сканируя весь пакет лекарства. Например -

Ниже приведено изображение с информацией о планшете под названием «Здоровье в норме».

https://i.stack.imgur.com/PuY9k.jpg

Мой вопрос заключается в том, можно ли с помощью сканирования или с помощью этого изображения извлечь только название планшета, т.е. «Здоровье в норме» ?

Я пытался использовать Pytesseract, но он не дал мне желаемых результатов. Ниже приведен код -

from PIL import Image
import pytesseract, re
f = "ocr.jpg"
t = pytesseract.image_to_string(Image.open(f))
print(t)
m = re.findall(r"[\d—-]+ TABLETS [\d—-]+", t)
if m:
    print(m[0])

Есть ли какое-либо возможное решение с использованием моделей ANN или CNN?

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

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

0 голосов
/ 17 апреля 2020

Я бы хотел создать переменную для желаемого текста, который вы хотите извлечь. После того, как вы запустите OCR для изображения, сохраните его вывод в списке. Например:

disired_text = 'Health OK'
OCR_output = ['Multivitamin', 'Multiminerals', 'Amino Acids', 'with Taurine', 'Health OK']

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

score_dict = {} #initializing dictionary to store text and score
for output_text in OCR_output:
    score = fuzzy_match_function(output_text, desired_text)
    score_dict[output_text] = score

Вы получите Score_dict (словарь), содержащий текст и оценки. Вы можете извлечь тот, который имеет минимальное расстояние с желаемой переменной.

Надеюсь, это сработает для вас!

...