【问题标题】:Is it possible to change a part of the background color of an image, when the image is a table?当图像是表格时,是否可以更改图像的部分背景颜色?
【发布时间】:2019-06-08 03:13:14
【问题描述】:

我正在使用 pytesseract、pillow、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)

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

【问题讨论】:

  • 你试过把表格裁剪成2张图片,然后调用pytesseract来识别文本,最后组装文本吗?
  • @LauReal,谢谢,我会试试的。但是图像较暗的部分,(黑色背景),我将其转换为灰度后如何阅读?
  • 你的意思是每张表都有不同的宽度和高度的标题吗?
  • @LauReal,不,我的意思是,表格的第一行(读取产品、单位销售额……)有黑色背景。我无法检测到并阅读它。这只是一个示例图像。我有不同的形象。这就是问题所在。未检测到黑色背景文本。表格行中的一些数字也未被检测到。
  • 那么问题就变成了:如何检测扫描图像中的表格和里面的数据?

标签: python opencv ocr opencv3.1 python-tesseract


【解决方案1】:

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

拆分 您可以将图像分成两部分。第一部分只是您的正常流程(加载图像,检测其上的文本)。第二个流程,您首先获取图像的负片 (255 - img),然后检测文本。

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

差异过滤器 您可以首先应用差异过滤器/边缘检测,这将使所有具有高对比度的东西都变高,但如果做得极端或某些字母更大,则会改变字母的形状。

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

【讨论】:

    猜你喜欢
    • 2021-06-30
    • 2015-08-07
    • 1970-01-01
    • 2014-04-26
    • 2011-06-17
    • 2019-09-04
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多