如何在Python或命令窗口中获取Tesseract的置信度水平?

4
我们如何在Windows中使用Tesseract 3.05对图像进行OCR后获取置信度水平?我正在使用Python通过子进程命令调用Tesseract: retcode = subprocess.call("tesseract -l eng myImage.png txt -psm 6" , stdin=None, stdout=False, stderr=None, shell=False) 请注意,保留HTML标记。
3个回答

3

除了Stef的回答,这里有一个示例命令,用于检查“output.tsv”文件中的置信度值。

tesseract Ancestry1.jpg output --oem 1 -l eng tsv

在此处,“Ancestry1.jpg”是要输入到tesseract中的图像文件。 oem 1用于使用4.0中的LSTM。 置信度存储在“output.tsv”文件中。

官方Tesseract网页上关于置信度级别的链接:Tesseract Wiki


3
这是您需要的封装器: https://pypi.python.org/pypi/tesserocr/2.0.0。此外,有很多Python封装器可用,但这个库是最接近覆盖所有C++ API的封装器。
示例:
from PIL import Image
from tesserocr import PyTessBaseAPI

image = Image.open('/usr/src/tesseract/testing/phototest.tif')
with PyTessBaseAPI() as api:
    api.SetImage(image)
    boxes = api.GetComponentImages(RIL.TEXTLINE, True)
    print 'Found {} textline image components.'.format(len(boxes))
    for i, (im, box, _, _) in enumerate(boxes):
        # im is a PIL image object
        # box is a dict with x, y, w and h keys
        api.SetRectangle(box['x'], box['y'], box['w'], box['h'])
        ocrResult = api.GetUTF8Text()
        conf = api.MeanTextConf()
        print (u"Box[{0}]: x={x}, y={y}, w={w}, h={h}, "
               "confidence: {1}, text: {2}").format(i, conf, ocrResult, **box)

2
最好明确一下,那里的代码是来自PyPI页面上的示例。 - Andrew Myers
谢谢您的留言,我在Windows机器上安装tesserocr时遇到了问题。它需要CPP构建工具2014,这似乎很难找到。我已经使用了pytesser包,并且它可以用于tesseract-ocr,但正如您所提到的,它没有足够的灵活性。tesseract-ocr 4.0版本在tsv文件中没有给出置信度,我不确定为什么会这样。 - c.Parsi
根据此网站,也许它只适用于3.05(devBranch)。如果您使用Pytesseract库,在“def process_request”函数内直接添加“tsv”选项以进行处理会更快。 - Vu Gia Truong

1
你可以使用 tsv output
tesseract testing/eurotext.png testing/eurotext-eng -l eng tsv

置信水平在倒数第二列。

1
我正在使用tesseract 4.0版本,当输出tsv时,conf列为空。我应该使用另一个版本的tesseract-ocr吗? - c.Parsi
1
你应该将“txt”替换为“tsv”,这样你就可以得到conf列。 - EdgeRover

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接