相关疑难解决方法(0)

OCR应用前的图像清洁

我在过去的几个小时里一直在试验PyTesser,这是一个非常好的工具.我注意到有关PyTesser准确性的一些事情:

  1. 带有图标,图像和文本的文件 - 准确率为5-10%
  2. 仅包含文本的文件(图像和图标已擦除) - 准确率为50-60%
  3. 带拉伸的文件(这是最好的部分) - 在x或y轴上面的2)拉伸文件将精度提高了10-20%

显然Pytesser并不关心字体尺寸或图像拉伸.虽然有很多关于图像处理和OCR的理论需要阅读,但是在应用PyTesser或其他库之前,是否有任何标准的图像清理程序(除了擦除图标和图像),而不管语言是什么?

...........

哇,这篇文章现在已经很老了.在过去的几天里,我再次开始研究OCR.这次我扔掉了PyTesser并使用了Tesseract引擎和ImageMagik.直截了当地说,这就是我发现的:

1) You can increase the resolution with ImageMagic(There are a bunch of simple shell commands you can use)
2) After increasing the resolution, the accuracy went up by 80-90%.
Run Code Online (Sandbox Code Playgroud)

因此,Tesseract Engine毫无疑问是市场上最好的开源OCR引擎.此处不需要事先清洁图像.需要注意的是,它不适用于包含大量嵌入图像的文件,而且我没有找到一种方法来训练Tesseract忽略它们.此外,图像中的文本布局和格式也有很大的不同.它只适用于带有文本的图像.希望这有帮助.

python ocr image-processing

14
推荐指数
3
解决办法
2万
查看次数

如何通过PIL和pytesseract使图像更具对比度,灰度然后准确地获得所有字符?

请在此处下载附件并将其另存为/tmp/target.jpg

在此处输入图片说明
您可以看到0244Rjpg,i中包含以下python代码提取字符串:

from PIL import Image
import pytesseract
import cv2
filename = "/tmp/target.jpg"
image = cv2.imread(filename)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret, threshold = cv2.threshold(gray,55, 255, cv2.THRESH_BINARY)
print(pytesseract.image_to_string(threshold))
Run Code Online (Sandbox Code Playgroud)

我得到的是

0244K
Run Code Online (Sandbox Code Playgroud)

正确的字符串是 0244R,如何使图像具有更高的对比度,灰度,然后使用PIL和pytesseract准确地获得所有字符?这是生成图像的网页:

http://www.crup.cn/ValidateCode/Index?t=0.14978241776661583

python-3.x python-tesseract

6
推荐指数
1
解决办法
122
查看次数