我正在使用pytesseract,枕头,cv2对图像进行OCR,并在图像中显示文本。由于我的输入是扫描的PDF文档,因此我首先将其转换为图像(JPEG)格式,然后尝试提取文本。我只有一半。输入为表格,标题未显示,因为标题背景为黑色。我也尝试过getstructuringelement,但是无法找出一种方法,这就是我所做的-
import cv2
import os
import numpy as np
import pytesseract
#import pillow
#Since scanned PDF can't be handled by pdf2image, convert the scanned PDF into a JPEG format using the below code-
filename = path
from pdf2image import convert_from_path
pages = convert_from_path(filename, 500) for page in pages:
page.save("dest", 'JPEG')
imgname = "path"
oriimg = cv2.imread(imgname,cv2.IMREAD_COLOR)
cv2.imshow("original image", oriimg)
cv2.waitKey(0)
#img = cv2.resize(oriimg,None,fx=0.5,fy=0.5,interpolation=cv2.INTER_CUBIC)
img = cv2.resize(oriimg,(700,1500),interpolation=cv2.INTER_AREA)
#here length height
cv2.imshow("lol", img)
cv2.waitKey(0)
cv2.imwrite("changed_dimensionsimgpath", img)
import PIL.Image
image = cv2.imread(imgname,cv2.IMREAD_COLOR)
grayedimg = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) grayedimg =
cv2.threshold(grayedimg, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
cv2.imwrite("H://newim.jpg", grayedimg)
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files (x86)\Tesseract-
OCR\tesseract.exe"
text = pytesseract.image_to_string(PIL.Image.open("path"))
print(text)
答案 0 :(得分:0)
从图像分析的角度来看,我有3种可能的方式
拆分 您可以将图像分为两部分。第一部分只是正常流程(加载图像,在其上检测文本)。第二步,您首先拍摄图像的底片(255-img),然后检测文本。
这两个结果随后需要合并。
差异过滤器 您可以首先应用差异过滤器/边缘检测,这将使具有高对比度的所有内容变高,但是如果做得太极端或某些字母更大,BUT可以改变字母的形状。
轮廓查找+填充 再次进行边缘检测,但是现在非常薄,然后进行轮廓检测。这将以一种颜色重新绘制所有字母。