光学字符识别Python代码完全忽略了某些图像的所有字符

时间:2018-10-05 14:23:49

标签: python image opencv ocr tesseract

我目前正在执行一个简单的任务,必须从简单的图像中读取字符。您可以在python中使用tesseract编写以下代码,该代码适用于所有带有英文文本的简单和复杂图像,但在特定图像上失败,有人可以告诉我为什么下面的python代码不能从下面的图像中读取字符,正如您在6中看到的那样黑色部分,每个框中有6个字符,字符颜色为白色。

from PIL import Image
import pytesseract
import argparse
import cv2
import os

ap = argparse.ArgumentParser()
ap.add_argument("-i","--image",required=True,help="path to input image to be OCR'd")
ap.add_argument("-p","-- preprocess",type=str,default="thresh",help="type of preprocessing to be done")
args=vars(ap.parse_args())
image = cv2.imread(args["image"])
gray2 = cv2.BackgroundSubtractor()
gray2 = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
gray2 = cv2.threshold(gray2, 100, 255, cv2.THRESH_BINARY_INV)[1]
rectKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 3))
sqKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
if args["preprocess"] == "thresh":
    gray2 = cv2.threshold(gray2, 2, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
elif args["preprocess"] == "blur":
    gray2 = cv2.medianBlur(gray2,3)
filename = "{}.png".format(os.getpid())
cv2.imwrite(filename,gray2)
text = pytesseract.image_to_string(Image.open(filename))
print(text)

If this image is used, it gives perfect result

0123456789 ABCDEFGHIJKL MNOPQRSTUV WXYZ

当我尝试使用下图时,

Processed Image which does not give result 该代码完全忽略了图像中的所有字符。唯一的不同是第一张图片没有第二张图片那样的框,第二张图片每个黑框都包含6个字符

有人可以帮忙告诉我,为什么我的第二个图像代码失败了,谢谢。

以下是原始图片: Image1 Image2

0 个答案:

没有答案