java ocr 消除背景,用open消除OCR的背景噪声

博主正在尝试使用Tesseract OCR进行文本识别,遇到的问题是背景噪声颜色与文本相近,导致预处理效果不佳。他们尝试了使用cv2.inRange函数以白色和黑色过滤图像,但结果仍不理想。博主还尝试了使用HSV颜色空间进行滤波,但仍未能达到期望效果。博客中提供了相关的代码片段,寻求进一步的建议或解决方案。
摘要由CSDN通过智能技术生成

我正在尝试使用tesseract进行OCR,为了获得更好的结果,我想在发送到tesseract之前去除背景噪音。在

我已经知道文本的颜色是固定的,并使用cv2.inrange来去除噪声背景,但问题是背景噪声的颜色与文本颜色相似,所以我就陷入了这种情况。在

以下是处理原始测试的“我的图像”:

{1美元^

我尝试了:使用cv2.inRange过滤内部文本颜色(颜色代码:#d7d4cf,喜欢白色而不是白色,有点灰色),但是有很多背景噪音。结果图像使用白色

X08SP.png使用cv2.inRange通过过滤类似黑色的颜色(#171510),它看起来更好,但仍然没有我想要的好,结果图像:使用黑色

ZIqiW.png我也试着用按位的方法,把白和黑合并在一起,但是得到了相似的结果,都不好。

有人能帮我或向我推荐什么,谢谢。在from PIL import Image

from pytesseract import *

import cv2

import numpy as np

def img_hsv_mask_white(img):

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# for hsv, OpenCV uses H: 0-179, S: 0-255, V: 0-255

lower_hsv = np.array([0,0,185])

upper_hsv = np.array([179,17,235])

mask = cv2.inRange(hsv, lower_hsv, upper_hsv)

blur = cv2.blur(mask,(3,3))

img2 = cv2.bitwise_and(img, img, mask = blur)

#cv2.imshow("mask", mask)

#cv2.waitKey (0)

return img2

def img_hsv_mask_black(img):

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# for hsv, OpenCV uses H: 0-179, S: 0-255, V: 0-255

lower_hsv = np.array([0,0,0])

upper_hsv = np.array([60,80,70])

mask = cv2.inRange(hsv, lower_hsv, upper_hsv)

blur = cv2.blur(mask,(8,8))

#return blur

img2 = cv2.bitwise_and(img, img, mask = blur)

#cv2.imshow("mask", mask)

#cv2.waitKey (0)

return img2

def immerge(img1, img2):

img = cv2.bitwise_and(img1,img2)

return img

#require module: numpy, opencv-python, Pillow, pytesseract

if __name__ == "__main__":

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

#print(pytesseract.get_tesseract_version())

for x in range(1,9):

file = str.format("0711/{0}.png",x)

srcimg = cv2.imread(file,cv2.IMREAD_UNCHANGED)

white = img_hsv_mask_white(srcimg)

black = img_hsv_mask_black(srcimg)

merged = immerge(white, black)

#cv2.imwrite("result.png",mask)

code = pytesseract.image_to_string(merged, lang ='eng')

print(code)

cv2.imshow(file, merged)

cv2.waitKey(0)

#break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值