首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >TypeError:需要整数(got类型元组) <python> <OpenCV> <tesseract>

TypeError:需要整数(got类型元组) <python> <OpenCV> <tesseract>
EN

Stack Overflow用户
提问于 2021-03-09 17:28:32
回答 2查看 51关注 0票数 0

我正在尝试对发票进行文本识别。

代码语言:javascript
代码运行次数:0
运行
复制
import pytesseract
from pytesseract import Output
import cv2

pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files/Tesseract-OCR/tesseract.exe'

img = cv2.imread('bill_copy.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
n_boxes = len(d['level'])
for i in range(n_boxes):
    (x, y, w, h) = (d['left'], d['top'], d['width'], d['height'])
    img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)

cv2.imshow(img, 'img')

当我运行它时,我得到了enter image description here

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-09 17:50:36

代码中的问题出现在以下语句中:

代码语言:javascript
代码运行次数:0
运行
复制
(x, y, w, h) = (d['left'], d['top'], d['width'], d['height'])

你需要得到每个区域的第i个值。

代码语言:javascript
代码运行次数:0
运行
复制
(x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i])

这个问题应该得到解决

票数 0
EN

Stack Overflow用户

发布于 2021-03-09 17:44:47

x,y,w,h的参数是每个分割字符的数组,但是在循环中它一个接一个地绘制矩形。

所以你需要在每个循环中为这些参数(x,y,w,h)发送一个整数。

而且你的代码中有很多错误。正确的代码应该是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
import pytesseract
from pytesseract import Output
import cv2

pytesseract.pytesseract.tesseract_cmd = r'C:/Program Files/Tesseract-OCR/tesseract.exe'

img = cv2.imread('bill_copy.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
n_boxes = len(d['level'])
(x, y, w, h) = (d['left'], d['top'], d['width'], d['height'])

for i in range(n_boxes):
    img = cv2.rectangle(img, (x[i], y[i]), (x[i] + w[i], y[i] + h[i]), (0, 0, 255), 2)

cv2.imshow('img',img)
cv2.waitKey(0)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66544195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档