Обнаружение персонажа Bangla с помощью pytesseract

Я пытаюсь обнаружить бангла-символ на изображении с помощью python, поэтому я решил использовать pytesseract. Для этой цели я использовал следующий код:

import pytesseract
from PIL import Image, ImageEnhance, ImageFilter

im = Image.open("input.png") # the second one
im = im.filter(ImageFilter.MedianFilter())
enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(2)
im = im.convert('1')
im.save('temp2.png')
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract'
text = pytesseract.image_to_string(Image.open('temp2.png'),lang="ben")
print text

Проблема в том, что если я дал изображение английского символа, он обнаруживает. Но когда я пишу lang="ben" и определяю по изображению бенгальских символов, мой код работает бесконечное время или вечно.

P.S. Я загрузил данные поезда на бенгальском языке в папку tessdata и пытаюсь запустить их в PyCharm.

Может ли кто-нибудь помочь мне решить эту проблему?

образец input.png


person Pial Kanti    schedule 26.03.2017    source источник


Ответы (2)


Я добавил Bangla(india) язык в Windows. Скачал ben.traineddata в TESSDATA_PREFIX, что равно C:\Program Files\Tesseract 4.0.0\tessdata на моем ПК. Тогда беги,

> tesseract -l ben bangla.jpg bangla_out

в командной строке и через 2 секунды получил результат ниже. Результат выглядит нормально, даже я не понимаю языка.

введите описание изображения здесь

Вы пытались запустить tesseract в командной строке, чтобы проверить, работает ли он для -l ben?

ИЗМЕНИТЬ:

Использовал Spyder, похожий на PyCharm, который поставляется с Anaconda, чтобы протестировать его. Измените свой код для вызова Tesseract, как показано ниже.

pytesseract.pytesseract.tesseract_cmd = "C:/Program Files/Tesseract 4.0.0/tesseract.exe"

Тестовый код в Spyder:

import pytesseract
from PIL import Image, ImageEnhance, ImageFilter
import os

im = Image.open("bangla.jpg") # the second one
im = im.filter(ImageFilter.MedianFilter())
enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(2)
im = im.convert('1')
im.save("bangla_pp.jpg")

pytesseract.pytesseract.tesseract_cmd = "C:/Program Files/Tesseract 4.0.0/tesseract.exe"
text = pytesseract.image_to_string(Image.open("bangla_pp.jpg"),lang="ben")
print text

Он работает и дает результат ниже на обработанном изображении. Судя по всему, результат распознавания обработанного изображения не так хорош, как исходный.

Результат обработки bangla_pp.jpg:

   প্রত্যাবর্তনকারীরা
   তাঁদের দেশে গিয়ে

   -~~-<~~~~--

   প্রত্যাবর্তন-পরবর্তী
   আর্থিক সহায়তা
    = পাবেন তার

Результат из исходного изображения, непосредственно переданный в Tesseract.

Код:

from PIL import Image    
import pytesseract as tess

print tess.image_to_string(Image.open('bangla.jpg'), lang='ben')

Выход:

প্রত্যাবর্তনকারীরা
তাঁদের দেশে গিয়ে

প্রত্যাবর্তন-পরবর্তী
আর্থিক সহায়তা
পাবেন তার
person thewaywewere    schedule 27.03.2017
comment
Я пробовал это в командной строке, это работает. Но приведенный выше код написан на pycharm. В pycharm он работает неограниченное время. - person Pial Kanti; 27.03.2017
comment
@pial см. РЕДАКТИРОВАТЬ выше. - person thewaywewere; 28.03.2017

Я установил некоторые шрифты в Windows отсюда

https://www.omicronlab.com/bangla-fonts.html

После этого он отлично работал у меня в Pycharm.

person Zahim    schedule 11.02.2021