使用pythontesseract错误(重叠)坐标的已识别符号的边界框?

2024-04-26 20:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使OCR的图片,并需要得到所有已识别的符号坐标。你知道吗

我可以用pytesseract.image\u到\u框,但结果中的坐标通常不好:

  • 上一个符号的右边缘的坐标大于下一个符号的开始坐标
  • 或下一个符号的开头

结果,我得到了盒子的重叠。你知道吗

这是一张图片,我可以向您展示这样的问题:

enter image description here

代码是:

filename = "page_1 - Copy.jpg"

page_width, page_height = Image.open(filename).size
print(page_width, page_height)

symbols_from_page = pytesseract.image_to_boxes(Image.open(filename),lang='deu', output_type=Output.DICT)#,boxes=True,config='hocr')

n_symbols = len(symbols_from_page['char'])
for i in range(n_symbols):
    #print(d['char'][i])
    (val,x, y, r, b, w, h) = (symbols_from_page['char'][i], symbols_from_page['left'][i], page_height - symbols_from_page['top'][i], symbols_from_page['right'][i] \
                              , page_height - symbols_from_page['bottom'][i], symbols_from_page['right'][i] - symbols_from_page['left'][i], symbols_from_page['top'][i] - symbols_from_page['bottom'][i])
    print(val,x, y, r, b, w, h)

结果是:

256 149

E 8 107 16 123 8 16
i 19 112 20 123 1 11
n 24 111 31 122 7 11
e 34 111 42 123 8 12
s 50 111 57 123 7 12
t 58 109 64 123 6 14
a 65 111 73 123 8 12
r 76 111 81 122 5 11
k 83 107 90 123 7 16
e 93 111 101 123 8 12
G 109 106 118 123 9 17
e 122 111 129 123 7 12
m 132 111 145 122 13 11
e 140 106 152 123 12 17
i 148 111 161 123 13 12
n 164 111 172 123 8 12
s 174 111 182 123 8 12
c 184 111 192 123 8 12
h 195 107 203 122 8 15
a 200 106 209 123 9 17
f 206 111 213 123 7 12
t 215 107 227 123 12 16

问题在于结尾的第四个和第三个符号: “h”的右坐标(203)大于下一个符号“a”的左坐标(200)。你知道吗

我做错什么了吗?可能是我对这些盒子的理解有点错误吧? 或者图书馆有什么漏洞?你知道吗

谢谢你的建议!你知道吗


Tags: fromimagepage符号图片openfilenamewidth