背景知识视频教程
计算机视觉:Python OCR和对象检测快速入门viadean.comOpenCV使用Python进行计算机视觉的完整指南 - 国外课栈viadean.com有效的Python - 国外课栈viadean.com
OCR是将输入的,手写的或印刷的文本转换为机器编码的文本的自动过程,我们可以通过字符串变量来访问和操作该文本。
安装和配置Tesseract
步骤1:安装
为了使用Tesseract库,我们首先需要在我们的系统上安装它。
对于macOS用户,我们将使用Homebrew安装Tesseract:
$ brew install tesseract
如果您使用的是Ubuntu操作系统,只需使用apt-get安装Tesseract OCR:
$ sudo apt-get install tesseract-ocr
对于Windows,请查阅Tesseract文档,本文不建议将Windows用于计算机视觉开发。
步骤2:验证已安装Tesseract
要验证Tesseract是否已成功安装在您的计算机上,请执行以下命令:
$ tesseract -v
tesseract 3.05.00
leptonica-1.74.1
libjpeg 8d : libpng 1.6.29 : libtiff 4.0.7 : zlib 1.2.8
您应该看到Tesseract版本打印到屏幕上,以及Tesseract兼容的图像文件格式库列表。
如果出现错误:
-bash: tesseract: command not found
则Tesseract未正确安装在您的系统上。返回步骤1并检查错误。此外,您可能需要更新PATH变量(仅适用于高级用户)。
步骤3:测试Tesseract OCR
为了使Tesseract OCR获得合理的结果,您需要提供经过完全预处理的图像。
使用Tesseract时,我建议:
尽可能具有高分辨率和DPI用作输入图像。
应用阈值分割背景中的文本。
确保前景与背景尽可能清晰地分开(即没有像素化或字符变形)。
对输入图像应用文本偏斜校正以确保文本正确对齐。
偏离这些建议可能会导致错误的OCR结果。
现在,让我们将OCR应用于下图:
只需在终端中输入以下命令:
$ tesseract tesseract_inputs/example_01.png stdout
Warning in pixReadMemPng: work-around: writing to a temp file
Testing Tesseract OCR
Tesseract正确标识了“ Testing Tesseract OCR”,并将其打印在终端中。
Tesseract对OCR的局限性
几周前,我正在进行一个项目,以识别信用卡上的16位数字。
我很容易编写Python代码来对四组4位数字中的每一个进行本地化。
这是一个示例4位区域:
但是,当我尝试将Tesseract应用于下图时,结果令人不满意:
$ tesseract tesseract_inputs/example_04.png stdout digits
Warning in pixReadMemPng: work-around: writing to a temp file
5513
请注意,Tesseract是识别为5513的,而图像清楚地显示了5678。
不幸的是,这是限制Tesseract的一个很好的例子。 当我们从背景中分割出前景文本时,文本的像素化性质使Tesseract感到困惑。 Tesseract还可能没有接受过类似信用卡字体的培训。
Tesseract最适合用于建立文档处理管道,在其中扫描图像,对其进行预处理,然后再应用光学字符识别。
我们应该注意,Tesseract不是针对OCR的现成解决方案,它不能在所有(甚至大多数)图像处理和计算机视觉应用程序中使用。
为此,您需要应用特征提取技术,机器学习和深度学习。
Python使用Tesseract OCR
使用OpenCV和Python的信用卡OCR
使用OpenCV和Python的银行支票OCR
使用OpenCV和Python识别数字
源代码