我正在尝试使用python从图像中检测bangla字符,因此我决定使用 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"
并从bengali字符的图像中检测到时,我的代码正在无休止地运行或者像永远一样。
P.S:我已将bengali语言列车数据下载到tessdata文件夹,我正在尝试在 PyCharm 中运行它。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
我在Windows中添加了Bangla(india)
语言。已下载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
它在处理后的图像上工作并生成下面的结果。显然,处理后图像的OCR结果不如原始结果好。
处理过的bangla_pp.jpg的结果:
প্রত্যাবর্তনকারীরা তাঁদের দেশে গিয়ে -~~-<~~~~-- প্রত্যাবর্তন-পরবর্তী আর্থিক সহায়তা = পাবেন তার
原始图像的结果,直接输入Tesseract。
代码:
from PIL import Image import pytesseract as tess print tess.image_to_string(Image.open('bangla.jpg'), lang='ben')
输出:
প্রত্যাবর্তনকারীরা তাঁদের দেশে গিয়ে প্রত্যাবর্তন-পরবর্তী আর্থিক সহায়তা পাবেন তার
答案 1 :(得分:0)