如何锐化图像以便OCR可以读取图像?

时间:2019-06-03 01:49:48

标签: python ocr cv2

我想锐化图像,以便OCR可以更清晰地读取图像。

为了便于阅读,我已使用此代码将图像处理为黑白。

import cv2
im_gray = cv2.imread('your_image_here', cv2.IMREAD_GRAYSCALE)
(thresh, im_bw) = cv2.threshold(im_gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
thresh = 127
im_bw = cv2.threshold(im_gray, thresh, 255, cv2.THRESH_BINARY)[1]
cv2.imwrite('bw_image.png', im_bw)

输出是这样的 enter image description here 然后,当我想通过OCR读取它时,输出不准确。我想读“ 443,296”和“ 72,727”。什么是锐化图像以便可以更准确地读取的代码?

2 个答案:

答案 0 :(得分:0)

猛击只能使您步入正轨。如果您真的想获得更多细节,则可以探索的一件事就是超分辨率神经网络。

您可以轻松地尝试了解技术的出色程度,那就是letsenhance.io,但是根据您的问题,您可能希望在本地运行。我不确定最好的那个,但也许https://github.com/alexjc/neural-enhance

答案 1 :(得分:0)

我建议尝试简单地扩展字符,看看是否可以改善您的OCR。

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
dilation = cv2.dilate(img,kernel,iterations = 1)

有关OpenCV中形态转换的更多信息:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html