python - 是否可以使用pytesseract从图像的特定部分提取文本

标签 python opencv ocr text-extraction python-tesseract

我在图像中具有边界框(矩形的坐标),并希望在该坐标内提取文本。如何使用pytesseract在该坐标内提取文本?

我尝试使用opencv将图像部分复制到其他numpyarray

cropped_image = image[y1:y2][x1:x2]

并尝试了pytesseract.image_to_string()。但是准确性很差。
但是,当我尝试将原始图像用于pytesseract.image_to_string()时,它完美地提取了所有内容。

是否有使用pytesseract提取图像特定部分的功能?

This image has different sections of information consider I have rectangle coordinates enclosing 'Online food delivering system' how to extract that data in pytessaract?

请帮忙
提前致谢

我使用的版本:
Tesseract 4.0.0
pytesseract 0.3.0
OpenCv 3.4.3

最佳答案

没有内置的功能可以使用Pytesseract提取图像的特定部分,但是我们可以使用OpenCV提取ROI边界框,然后将此ROI放入Pytesseract中。我们将图像转换为灰度,然后将其转换为阈值以获得二进制图像。假设您具有所需的ROI坐标,我们使用Numpy切片来提取所需的ROI

enter image description here

从这里,我们将其放入Pytesseract以得到我们的结果

ONLINE FOOD DELIVERY SYSTEM

代码
import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

image = cv2.imread('1.jpg', 0)
thresh = 255 - cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

x,y,w,h = 37, 625, 309, 28  
ROI = thresh[y:y+h,x:x+w]
data = pytesseract.image_to_string(ROI, lang='eng',config='--psm 6')
print(data)

cv2.imshow('thresh', thresh)
cv2.imshow('ROI', ROI)
cv2.waitKey()

关于python - 是否可以使用pytesseract从图像的特定部分提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58948775/

相关文章:

python - 是否(仍然)没有像样的 Pyramid OAuth2 Provider 库?

python - 调试慢程序;从中间重新开始

python - Qt窗口上的OpenCV setMouseCallback

opencv - 使用 OpenCV 在 Objective-C++ 中播种和霍夫圆

c++ - 更改后如何将默认名称设置为窗口?

python - Python 正态性检验中 p 值的解释

python - 富 Web 客户端与瘦 Web 客户端

python - 在 Python 中加载 OpenCV EAST 文本检测器时出错

ruby - 添加 gem "tesseract-ocr"Rails 4 后尝试运行服务器时出错

python - 检测 OCR 文本图像是否上下颠倒