当前位置: 首页 > ai >正文

Python OCR库:自动化测试验证码识别神器!

在接口自动化工作中,经常需要处理文字识别的任务,而OCR(Optical Character Recognition,光学字符识别)库能够帮助我们将图像中的文字提取出来。Python中有几个常用的OCR库,包括pyocrpytesseractpython- tesseractEasyOCR。本文将对它们进行比较,并提供一些示例代码来演示它们在实际接口自动化工作中的应用。

1、pyocr

PyOCR是一个Python库,提供了对多个OCR引擎的封装。它可以方便地在Python中使用不同的OCR引擎进行文本识别。

PyOCR支持以下OCR引擎:

  • Tesseract:Tesseract是一个开源的OCR引擎,由Google开发。它支持多种语言,并且在OCR准确性方面表现良好。
  • Cuneiform:Cuneiform是一个开源的OCR引擎,支持多种语言和字体。
  • GOCR:GOCR是一个开源的OCR引擎,主要用于识别简单的文本和数字。

适用场景:

  • 文字识别和提取:用于将印刷体文字从图像中提取出来,以便进行文本处理、搜索和分析。
  • 文档扫描和转换:用于将扫描的纸质文档转换为可编辑的电子文档。
  • 自动化数据录入:用于将图像中的数据转换为计算机可读的格式,以便进行数据处理和分析。
  • 图像标注和分类:用于从图像中提取文本信息,以便对图像进行标注和分类。

使用PyOCR进行文本识别的步骤如下:

  • 安装PyOCR库和相应的OCR引擎:pip install pyocr
  • 导入PyOCR库和所需的OCR引擎。
  • 初始化OCR引擎。
  • 打开图像文件或者将图像转换为PIL图像对象。
  • 使用OCR引擎的image_to_string方法进行文本识别。

示例:以下是一个使用Tesseract库进行文字识别的示例:

import pyocr
import pyocr.builders
from PIL import Image# 初始化OCR引擎
tools = pyocr.get_available_tools()
if len(tools) == 0:print("No OCR tool found")exit(1)
ocr_tool = tools[0]# 打开图像文件
image = Image.open('image.jpg')# 使用OCR引擎进行文本识别
text = ocr_tool.image_to_string(image,lang='eng',builder=pyocr.builders.TextBuilder()
)# 打印识别结果
print(text)

在这个示例中,首先使用pyocr.get_available_tools()获取可用的OCR引擎列表,然后选择第一个可用的引擎进行初始化。接着使用PIL库打开图像文件,然后使用OCR引擎的image_to_string方法进行文本识别,同时指定识别语言和文本构建器。最后打印识别结果。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

2、pytesseract

pytesseract是一个Python库,它提供了对Tesseract OCR引擎的封装。Tesseract是一个开源的OCR引擎,由Google开发。pytesseract可以方便地在Python中使用Tesseract进行文本识别。

pytesseract具有以下特点:

  • 支持多种语言:pytesseract可以识别多种语言的文字,包括英语、中文、日语等。
  • 支持多种图像格式:pytesseract可以处理多种常见的图像格式,如JPEG、PNG、TIFF等。
  • 简单易用:pytesseract提供了一个简单的API,只需几行代码即可完成文本识别。

使用pytesseract进行文本识别的步骤如下:

  1. 安装pytesseract库和Tesseract OCR引擎。
  2. 导入pytesseract库。
  3. 打开图像文件或者将图像转换为PIL图像对象。
  4. 使用pytesseract库的image_to_string方法进行文本识别。

以下是一个使用pytesseract进行文本识别的示例:

import pytesseract
from PIL import Image# 打开图像文件
image = Image.open('image.jpg')# 使用pytesseract进行文本识别
text = pytesseract.image_to_string(image)# 打印识别结果
print(text)

在这个示例中,首先使用PIL库打开图像文件,然后使用pytesseract库的image_to_string方法将图像中的文字识别为文本,最后打印识别结果。

需要注意的是,使用pytesseract进行文本识别前,需要确保已经正确安装了Tesseract OCR引擎,并将其配置为系统环境变量之一。这样pytesseract才能找到并使用Tesseract引擎进行识别。

3、python-tesseract

python-tesseract是一个Python库,它提供了对Tesseract OCR引擎的封装。Tesseract是一个开源的OCR引擎,由Google开发。python-tesseract库可以方便地在Python中使用Tesseract进行文本识别。

python-tesseract具有以下特点:

  • 支持多种语言:python-tesseract可以识别多种语言的文字,包括英语、中文、日语等。
  • 支持多种图像格式:python-tesseract可以处理多种常见的图像格式,如JPEG、PNG、TIFF等。
  • 简单易用:python-tesseract提供了一个简单的API,只需几行代码即可完成文本识别。

使用python-tesseract进行文本识别的步骤如下:

  1. 安装python-tesseract库和Tesseract OCR引擎。
  2. 导入python-tesseract库。
  3. 打开图像文件或者将图像转换为PIL图像对象。
  4. 使用python-tesseract库的image_to_string方法进行文本识别。

以下是一个使用python-tesseract进行文本识别的示例:

import pytesseract
from PIL import Image# 打开图像文件
image = Image.open('image.jpg')# 使用python-tesseract进行文本识别
text = pytesseract.image_to_string(image)# 打印识别结果
print(text)

在这个示例中,首先使用PIL库打开图像文件,然后使用python-tesseract库的image_to_string方法将图像中的文字识别为文本,最后打印识别结果。

需要注意的是,使用python-tesseract进行文本识别前,需要确保已经正确安装了Tesseract OCR引擎,并将其配置为系统环境变量之一。这样python-tesseract才能找到并使用Tesseract引擎进行识别。

以下是一个更为复杂的例子,展示了如何使用python-tesseract进行文本识别,并对识别结果进行一些后处理:

import pytesseract
from PIL import Image
import re# 打开图像文件
image = Image.open('image.jpg')# 使用python-tesseract进行文本识别
text = pytesseract.image_to_string(image)# 去除识别结果中的非法字符
cleaned_text = re.sub(r'[^a-zA-Z0-9\s]', '', text)# 将识别结果按行分割成列表
lines = cleaned_text.split('\n')# 去除空行
lines = [line.strip() for line in lines if line.strip()]# 打印识别结果
for line in lines:print(line)

在这个例子中,我们首先使用PIL库打开图像文件,然后使用python-tesseract库的image_to_string方法将图像中的文字识别为文本。接下来,我们使用正则表达式去除识别结果中的非法字符,只保留字母、数字和空格。然后,我们将识别结果按行分割成列表,并去除空行。最后,我们逐行打印识别结果。

这个例子展示了如何对识别结果进行一些后处理操作,以获得更干净和可读性更高的文本。根据实际需求,你可以根据需要进行更多的后处理操作,如去除特定的字符、提取关键信息等。

4、EasyOCR

EasyOCR是一个功能强大且开源、易于使用的OCR库,适用于各种文字识别任务,包括文档扫描、图像处理、自然语言处理等。它可以帮助开发者快速实现文字识别功能,并应用于各种应用领域。与其他OCR库相比,EasyOCR具有以下特点:

  1. 多语言支持:EasyOCR支持超过80种语言的文字识别,包括中文、英文、日文、韩文等。它可以处理多种语言混合的文本,适用于全球范围的应用。
  2. 高精度识别:EasyOCR使用了深度学习模型和先进的OCR技术,能够提供高精度的文字识别结果。它在多个公开数据集上进行了训练和测试,具有较高的准确率和鲁棒性。
  3. 简单易用:EasyOCR提供了一个简单的API,使得文字识别变得容易。只需几行代码,即可将图像中的文字转换为可用的文本。
  4. 跨平台支持:EasyOCR可以在多个平台上运行,包括Windows、Linux和Mac OS。它支持Python和命令行界面,可以与其他编程语言和工具集成。

使用EasyOCR进行文字识别的步骤如下:

  1. 安装EasyOCR库:可以使用pip命令安装EasyOCR库,例如pip install easyocr
  2. 导入EasyOCR库:在Python代码中导入EasyOCR库,例如import easyocr
  3. 创建OCR对象:创建一个OCR对象,例如reader = easyocr.Reader(['en', 'zh']),指定要识别的语言。
  4. 识别文字:使用OCR对象的readtext方法对图像中的文字进行识别,例如result = reader.readtext('image.jpg')
  5. 处理识别结果:根据需要处理识别结果,例如提取文字内容、位置和置信度等。

以下是一个使用EasyOCR进行文字识别的简单示例:

import easyocr# 创建OCR对象
reader = easyocr.Reader(['en', 'zh'])# 识别文字
result = reader.readtext('image.jpg')# 处理识别结果
for (text, bbox, confidence) in result:print(f'Text: {text}, Bbox: {bbox}, Confidence: {confidence}')

在这个示例中,我们首先创建了一个OCR对象,指定了要识别的语言为英文和中文。然后,我们使用OCR对象的readtext方法对图像文件进行文字识别,返回一个包含识别结果的列表。最后,我们遍历识别结果,打印每个文字的内容、位置和置信度。

5、小结

本文介绍了Python中几个常用的OCR库,并提供了相应的代码示例。这些库都可以帮助我们在接口自动化工作中进行文字识别,从而实现更多的自动化功能和任务。根据实际需求,您可以选择适合自己的OCR库,并结合其他工具和技术来完成更复杂的接口自动化工作。

下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

资料获取方式 :

http://www.xdnf.cn/news/11419.html

相关文章:

  • symbian系统开发教程(一)
  • 神秘“鬼影”病毒袭击Winxp系统,重装也无法消灭
  • 20款数据可视化工具大盘点 来自行业专家的推荐
  • windows搭建一个FTP服务器超详细
  • 5个网络监控神器,别说老网工藏私不发给你
  • 单片机(C语言)代码基础
  • 圈圈教你学USB第一章
  • 80后的101个特征,看你有哪些???
  • 详解python之re库使用方法2
  • 网页版微信CRM系统,让微信管理更方便!
  • 新手如何搭建测试平台?
  • 从零开始搭建云呼叫中心之FreeSwitch实战
  • Android:制作Update.zip升级包
  • Android ComponentName的使用
  • 针不错!10+个综合资源网站,好用的很网站!
  • 什么是C语言?
  • ShellExecuteEx执行新进程,无需管理员权限写入注册表
  • C# ManagementObjectSearcher操作window案例详解
  • css边框border(含代码,易懂)
  • 怎样从零开始学习网络工程师?
  • notifyDataSetChanged()无效原因
  • 配置管理工具比较
  • 项目管理(PMP)真题解析(一)
  • 斑斓中国BlenderCN项目库
  • R︱并行计算以及提高运算效率的方式(parallel包、clusterExport函数、SupR包简介)
  • 常用的开源中文分词工具
  • Altium Designer 之 批量修改过孔盖油设置
  • 【Java】ResourceBundle 使用
  • 有关My97DatePicker日期插件的详细使用
  • csdn软件是干什么的?