【发布时间】:2019-11-19 08:53:13
【问题描述】:
我有一张图片,我需要从该图片中提取文本。 我需要提取的文本来自指定的坐标位置。让我们说 坐标=[ymin:ymax, xmin:xmax]。 我尝试使用此坐标创建新图像并提取文本。但是由于新图像的质量低,准确性非常低。 所以现在我正在研究如何在不创建新图像的情况下提取坐标值中的文本。 我正在使用 OpenCv 读取图像并使用 pytesseract 提取文本。
import cv2
import pytesseract
import os
from PIL import Image
import sys
import numpy as np
# import textacy
config = ('-l eng --oem 2 --psm 1')
image = cv2.imread('C:/DocumentProcessing/IMAGE/2 (8).jpg')
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imwrite('gray.jpg',gray)
_,thresh = cv2.threshold(gray,150,255,cv2.THRESH_BINARY_INV) # threshold
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
dilated = cv2.dilate(thresh,kernel,iterations = 30)
_,contours, hierarchy = cv2.findContours(dilated,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
my_list = []
for contour in contours:
[x,y,w,h] = cv2.boundingRect(contour)
cv2.rectangle(image,(x,y),(x+w,y+h),(127.5,0,255),1)
new_image = image[y:y+h, x:x+w]
cv2.imwrite(f"contoured-{y}-{x}.jpg", new_image)
result = pytesseract.image_to_string(new_image,config=config)
Tesseract 4.0.0 pytesseract 0.3.0 OpenCv 3.4.3
【问题讨论】:
-
请提供您使用的示例图像和代码。
-
@user898678 问题已用代码更新,谢谢
-
您没有提供/上传图片。一些解决方案取决于图像质量。
-
@user898678 如果图像质量很好,那么我也想从坐标点中提取它。如果您有任何想法,请分享
-
如果图像质量好,那么部分图像的 OCR 也应该没问题。如果您不提供使我们能够重现问题的图像,那么您将独自解决您的问题。
标签: python opencv tesseract text-extraction python-tesseract