我正在努力找出解析使用pytesseract.image_to_data("image.png")
得到的字符串的最佳方法。
当我通常得到数据库时,结果是这样的:
level page_num block_num par_num line_num word_num left top width height conf text
1 1 0 0 0 0 0 0 1920 1080 -1
2 1 1 0 0 0 0 8 28 17 -1
3 1 1 1 0 0 0 8 28 17 -1
4 1 1 1 1 0 0 8 28 17 -1
5 1 1 1 1 1 0 8 28 17 95.000000
2 1 2 0 0 0 15 9 737 52 -1
3 1 2 1 0 0 15 9 737 52 -1
4 1 2 1 1 0 15 9 438 19 -1
5 1 2 1 1 1 15 9 10 9 27.712341 |
5 1 2 1 1 2 31 10 58 14 96.167610 Tableau
5 1 2 1 1 3 96 10 46 14 92.450928 Public
5 1 2 1 1 4 148 18 5 1 92.450928 -
5 1 2 1 1 5 160 11 66 13 96.975945 Business
5 1 2 1 1 6 231 10 84 18 93.306007 Ownership
5 1 2 1 1 7 322 18 5 1 92.816788 -
5 1 2 1 1 8 334 11 56 13 96.618721 Section
etc.....
但我希望数据显示在列表/dict中,这样我就可以根据text
值搜索width
和height
。所以我知道我想做一些类似的事情:
data = pytesseract.image_to_data("image.png")
for rows in data:
if "Public" in rows["text"]:
print(rows["width"])
print(rows["height"])
但由于数据是以字符串的形式出现的,我不知道该怎么做。
我试着看看pytesseract是否有办法将有问题的图像解析为我正在寻找的列表/dict结构,但目前还没有成功。解析似乎也很难,因为我认为这是一个用制表符分隔的字符串?
有没有办法将pytesseract图像转换为列表/数组,这样我就可以从中提取我想要的特定信息?
我在@shawncaza找到答案的同时找到了答案。image_to_data
的函数有一个输出类型的param选项,您可以将其设置为dict。以下是如何将这种类型的字符串转换为dict/list:的基本示例
import pytesseract
from pytesseract import Output
pytesseract.pytesseract.tesseract_cmd = r"C:Program FilesTesseract-OCRtesseract.exe"
data = pytesseract.image_to_data("image.png", output_type=Output.DICT)
print(data)