我在Windows机器上使用Python 2.7,Pytesseract-0.1.7和Tesseract-ocr 3.05.01。
我试图提取韩语和俄语的文本,我很肯定我提取了。
现在我需要与从图像中提取的字符串和字符串进行比较。
我无法比较字符串并获得正确的结果,只是说不匹配。
这是我的代码:
# -*- coding: utf-8 -*-
from PIL import Image
import pytesseract
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--input", required=True, help="path to the image")
args = vars(ap.parse_args())
img = Image.open(args["input"])
img.load()
text = pytesseract.image_to_string(img)
print(text)
text = text.encode('ascii')
print(text)
i = 'Сред. Скорость'
print i
if ( text == i):
print "Match"
else :
print "Not Match"
附加了用于提取文本的图像。
现在我需要一种方法来匹配它。而且我还需要知道从pytesseract中提取的字符串将是Unicode还是什么?如果有办法将其转换为Unicode(就像我们在wordpad中选择将字符转换为Unicode)
答案 0 :(得分:7)
您正在使用Tesseract使用非英语语言,所以首先要确保您已安装语言的学习数据集,因为它显示为here(仅限linux指令)。
其次,如果你使用的是非ascii语言,我强烈建议你切换到Python 3(就像我一样,作为斯洛文尼亚语)。 Python 3可与开箱即用的Unicode配合使用,因此通过编码和解码字符串可以为您节省大量的痛苦......
# python3 obligatory !!!
from PIL import Image
import pytesseract
img = Image.open("T9esw.png")
img.load()
text = pytesseract.image_to_string(img, lang="rus") #Specify language to look after!
print(text)
i = 'Сред. Скорость'
print(i)
if (text == i):
print("Match")
else :
print("Not Match")
哪个输出:
Фред скорасть
Сред. Скорость
Not Match
这意味着单词并不完全匹配,但考虑到最小的编码工作量和输入图像的可怕质量,它认为性能非常惊人。无论如何,该示例表明编码和解码应该不再是一个问题。