python - 使用python提取Pytesseract外语

标签 python unicode ocr

我在 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(就像我们在写字板中有用于将字符转换为 Unicode 的选项)

Russian text image

最佳答案

您正在使用英语以外的其他语言使用 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

这意味着单词不完全匹配,但考虑到最小的编码工作量和输入图像的糟糕质量,它认为性能非常惊人。无论如何,该示例表明编码和解码应该不再是问题。

关于python - 使用python提取Pytesseract外语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44691829/

相关文章:

python - StringIO 和 Pandas read_csv

python - 如何在Python2中循环遍历\u2190-\u21FF的范围

perl - 当字节存储在 Perl 中的不同变量中时,如何从其字节创建 Unicode 字符?

python - UnicodeDecodeError 'utf-8' 编解码器无法解码 - 使用 python shapefile reader

objective-c - 适用于 iPhone SDK 的名片阅读器或 OCR 库

Python 正则表达式将一行分成 4 部分

python - 用 kivy 语言清洁 Canvas

c# - 在 C# 中识别手写数字的神经网络

ios - 如何转换相机图像的 DPI(每英寸点数)。?

python - 如何加速 Poisson pmf 函数?