使用 Tesseract 从小图像中读取日期

Using Tesseract to read dates from a small images

我有一小部分包含日期的图像。尺寸可能是个问题,但我会说质量还可以。我已按照 the guidelines 向引擎提供我能提供的最清晰的图像。调整大小后,应用过滤器、大量试验和错误等。我想出了一个几乎可以正确阅读的图像。我在下面举了一个例子:

现在,这读作 “9 MAR 2021\n\x0c。不错,但第一个 2 读作 "。在这一点上,我认为我滥用了 Tesseract 的部分功能。毕竟,我知道它应该期待什么,即 "%d %b %Y".

有没有办法告诉 Tesseract 它应该尝试找到给定这个强约束的最佳匹配?向引擎提供此元数据应该会极大地促进任务。我一直在阅读文档,但找不到执行此操作的方法。

我在 Tesseract 4.1 上使用 pytesseract。使用 Pytyon 3.9.

您需要了解以下内容:

现在,如果我们将图像居中(通过添加边框):

  • 我们在不丢失任何像素的情况下对图像进行上采样。

其次,我们需要将图像中的字符加粗,以使OCR结果准确。

现在 OCR:

29 MAR 2021

代码:

import cv2
import pytesseract

# Load the image
img = cv2.imread("xsGBK.jpg")

# Center the image
img = cv2.copyMakeBorder(img, 50, 50, 50, 50, cv2.BORDER_CONSTANT, value=[0, 0, 0])

# Convert to the gray-scale
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Dilate
gry = cv2.dilate(gry, None, iterations=1)

# OCR
print(pytesseract.image_to_string(gry))

# Display
cv2.imshow("", gry)
cv2.waitKey(0)