点击关注我哦
一篇文章带你了解三步即可完成的OCR入门
在《这篇文章》中,我们有简单提到“Optical Character Recognition(OCR)”的相关内容,本文将对OCR进行简要介绍~
OCR是通过使用电子或机械设备将二维文本数据转换为机器编码文本的形式。二维文本数据可以从各种来源获得,例如扫描的文档(如PDF文件),带有文本数据(如.png或.jpeg格式)的图像,路标(如交通路标)或任何其他形式的文本数据的图像。OCR有许多有趣的应用。
第一次遇到OCR还是在上学的时候,我们的答题卡检测就是这个过程!当然由于设备的故障或者一些其他的bug,导致检测结果可能有些许偏差。然而,随着现代技术的发展,OCR技术被应用到了各种各样的应用中,并且它们已经变得更加先进,精度已经大大提高。
在本文中,我们将介绍OCR的基础知识。然后,我们将继续安装pytesseract模块,用于执行OCR。安装过程总是很烦人的, 因此本文将尝试简化安装过程。然后了解pytesseract模块中的各种功能。最后,我们将以一个代码片段结尾,该代码片段涵盖将OCR与Google文本到语音模块结合使用的功能。
注:最后的代码将是一个结合使用文本语音转换和字符识别的代码。这是语言模型设计系列的第二部分。如果您对gTTS模块没有任何线索,可以查看《使用Python三步完成文本到语音的转换》。
OCR究竟是如何工作的?
OCR流程如上图所示。发送API请求以执行OCR操作。输入图像被读取并相应地预处理。文本被格式化并从图像中提取。利用训练好的数据集计算发送到OCR引擎中的图像。OCR分析图像中的字符,完成后它将发送数据以进行下一步的预处理和格式化。我们将最终获得所需的文本数据。
安装:
下面是经过小编简化的安装步骤。第一步很简单,只需使用pip命令安装pytesseract模块。在命令提示符中输入以下命令:
pip install pytesseract
现在已经成功安装了pytesseract模块,但是尝试运行代码时,会收到一条错误消息,指出系统中未安装tesseract模块。解决这个问题需要打开下面的链接。 可从UB Mannheim的Tesseract获得Tesseract 的一系列安装版本。
选择所需的版本进行安装。可以将pytesseract模块添加到路径中,也可以直接使用它。
了解pytesseract模块:
Python-tesseract是Google Tesseract-OCR引擎的包装。它也可以用作tesseract的独立调用脚本,因为它可以读取Pillow和Leptonica图像库支持的所有图像类型,包括jpeg,png,gif,bmp,tiff等。
为了更直观地理解这一点,让我们看下面的简单代码:
# Importing the OCR library
import pytesseract
# Specifying the path
pytesseract.pytesseract.tesseract_cmd = r'C:/Program Files/Tesseract-OCR/tesseract.exe'
# Reading the image
image = cv2.imread('1.png')
# Extraction of text from image
text = pytesseract.image_to_string(image)
首先导入pytesseract模块并指定路径, 然后使用cv2模块读取图像, 最后提取这些图像并返回文本数据。 image_to_string返回在图像上运行的Tesseract OCR的结果,以字符串形式显示。 有关tesseract OCR及其功能(如image_to_string)的更多信息,可以查看下面的链接。
代码:
本节将包含最终的代码段,将文本语音转换以及OCR结合在一起。我们将使用最近安装的pytesseract模块以及gTTS和PIL等模块。PIL代表python图像库,该库将用于加载图像。opencv库中的相关函数也可以用于读取图像。整个代码由如下3部分组成。
1. 读取图像:
在这个代码块中,将导入所需的库并指定Tesseract的路径。然后继续使用cv2模块读取图像。当然也可以使用PIL库来实现这一点。之后将使用OCR库将图像转换为文本数据并打印所需的输出。
#Importing the libraries
import cv2
import pytesseract
from PIL import Image
# Specifying the path
pytesseract.pytesseract.tesseract_cmd = r'C:/Program Files/Tesseract-OCR/tesseract.exe'
# Reading the image
image = cv2.imread('1.png')
# Extraction of text from image
text = pytesseract.image_to_string(image)
# Printing the text
print(text)
2. 格式化数据:
在这个代码块中,我们将得到的数据进行格式化的处理,将其变为一行。基本上是对已经获得的文本数据进行预处理,然后将其传递到gTTS模块进行语音翻译。
# Create the voice_text variable to store the data.
voice_text = ""
# Pre-processing the data
for i in text.split():
voice_text += i + ' '
voice_text = voice_text[:-1]
voice_text
3. 转换成语音:
最后将导入Google文本语音转换模块,并将文本数据转换为声音文件的形式。这对于在PDF和图像中听到文本数据的音频非常有用。
from gtts import gTTS
from playsound import playsound
tts = gTTS(voice_text)
tts.save("test.mp3")
playsound("test.mp3")
如果您对gTTS模块有疑问,可以通过《使用Python三步完成文本到语音的转换》这篇文章回顾之前的知识哦~
结论:
本文已经介绍了OCR的一些概念,并直观地了解了OCR处理流程是如何工作的。然后了解了pytesseract模块的一些功能,最后编写了一个结合gTTS和pytesseract模块的代码。
在本主题语言模型设计的下一部分中,我们将探讨如何使用深度学习技术以及OCR和TTS(文本到语音)来开发一个很酷的项目。
强烈建议大家查阅以下参考资料,以便更好地掌握这些概念并更好地学习它们。如果你有任何疑问可以随时联系小编哦~
· END ·
HAPPY LIFE