当图像是表格时,是否可以更改图像背景颜色的一部分?

2024-09-27 09:21:49 发布

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

我正在使用pytesseract,pillow,cv2来OCR图像,并得到图像中的文本。因为我的输入是扫描的PDF文档,所以我首先将其转换为图像(JPEG)格式,然后尝试提取文本。我只有一半。输入是一个表格,标题不显示,因为标题有黑色背景。我也尝试了GetStructureElement,但无法找到一种方法-

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)

我的输入表如下所示。具有黑色背景的区域不会被OCR识别,也不会被提取为文本。--input table


Tags: pathfrom图像image文本importconvertimg
1条回答
网友
1楼 · 发布于 2024-09-27 09:21:49

从图像分析的角度来看,我有三种可能的方法

拆分 你可以把图像分成两部分。第一部分是您的正常流程(加载图像,检测其中的文本)。第二个流你先取底片的图像(255-img),然后再检测文本。在

这两个结果之后需要合并。在

差分滤波器 你可以先应用一个差分滤波器/边缘检测,这将使所有的东西都具有高对比度,但可以改变字母的形状,如果做极端或如果一些字母大得多。在

轮廓查找+填充 再次是边缘检测,但现在非常薄,然后是轮廓检测。这将以一种颜色重新绘制所有字母。在

相关问题 更多 >

    热门问题