大家好,我是涛哥,本文内容来自 涛哥聊Python ,转载请标原创。
更多Python学习内容:http://ipengtao.com
今天为大家分享一个超厉害的 Python 库 - EasyOCR。
Github地址:https://github.com/JaidedAI/EasyOCR
光学字符识别(OCR)技术在现代图像处理和计算机视觉领域有着广泛的应用,能够将图片中的文字提取出来并转化为可编辑的文本。EasyOCR
是一个由 Jaided AI 开发的 Python 库,旨在提供简单而强大的 OCR 功能。它支持多种语言,易于使用,并且具有高效的识别性能。本文将详细介绍 EasyOCR
库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。
安装
要使用 EasyOCR
库,首先需要安装它。以下是安装步骤:
使用 pip 安装
可以通过 pip 直接安装 EasyOCR
及其依赖项:
pip install easyocr
安装 Pytorch
EasyOCR
依赖于 Pytorch
,因此在安装 EasyOCR
之前,需要确保系统中已经安装了 Pytorch
。
可以根据自己的系统和 CUDA 版本,通过以下命令安装 Pytorch
:
pip install torch torchvision torchaudio
如果需要安装特定版本的 Pytorch
,可以访问 Pytorch 官方网站 获取安装命令。
特性
- 多语言支持:支持 80 多种语言,包括中文、英文、日文、韩文等。
- 易于使用:提供简单的 API,能够快速上手并进行 OCR 任务。
- 高效识别:基于深度学习的文本识别模型,具有高效的文字识别性能。
- 支持手写文字:能够识别手写文字,适用范围广泛。
- 自定义模型:支持用户使用自定义模型进行文字识别。
基本功能
初始化 Reader 对象
在进行 OCR 操作之前,需要初始化一个 Reader
对象:
import easyocr
# 初始化支持中文和英文的 Reader 对象
reader = easyocr.Reader(['ch_sim', 'en'])
识别图片中的文字
可以使用 readtext
方法识别图片中的文字:
# 识别图片中的文字
result = reader.readtext('example.jpg')
# 输出识别结果
for res in result:
print(f"文本内容: {res[1]}, 置信度: {res[2]}")
输出带有位置信息的识别结果
识别结果中包含文字的位置信息,可以用于进一步处理:
result = reader.readtext('example.jpg')
for res in result:
print(f"位置信息: {res[0]}, 文本内容: {res[1]}, 置信度: {res[2]}")
高级功能
自定义识别模型
可以使用自定义的识别模型进行文字识别:
# 初始化使用自定义模型的 Reader 对象
reader = easyocr.Reader(['ch_sim', 'en'], model_storage_directory='path/to/custom_model', user_network_directory='path/to/custom_network')
# 识别图片中的文字
result = reader.readtext('example.jpg')
处理多页 PDF
EasyOCR
可以处理多页 PDF 文件,提取其中的文字:
result = reader.readtext('example.pdf', pdf=True)
for page in result:
for res in page:
print(f"位置信息: {res[0]}, 文本内容: {res[1]}, 置信度: {res[2]}")
识别手写文字
EasyOCR
支持识别手写文字,只需在初始化 Reader
对象时指定相应的语言:
# 初始化支持中文手写文字的 Reader 对象
reader = easyocr.Reader(['ch_sim', 'en'], recog_network='handwritten')
# 识别图片中的手写文字
result = reader.readtext('handwritten_example.jpg')
for res in result:
print(f"文本内容: {res[1]}, 置信度: {res[2]}")
实际应用场景
文档数字化
在文档数字化过程中,通过 EasyOCR
提取扫描件中的文字,转化为可编辑的文本文件。
import easyocr
# 初始化 Reader 对象
reader = easyocr.Reader(['ch_sim', 'en'])
# 识别文档扫描件中的文字
result = reader.readtext('document_scan.jpg')
# 将识别结果保存为文本文件
with open('document_text.txt', 'w', encoding='utf-8') as f:
for res in result:
f.write(f"{res[1]}\n")
数据录入自动化
在数据录入过程中,通过 EasyOCR
提取表单或票据中的信息,自动录入到数据库中。
import easyocr
import sqlite3
# 初始化 Reader 对象
reader = easyocr.Reader(['ch_sim', 'en'])
# 识别表单中的文字
result = reader.readtext('form_image.jpg')
# 将识别结果保存到数据库中
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
for res in result:
cursor.execute("INSERT INTO form_data (text, confidence) VALUES (?, ?)", (res[1], res[2]))
conn.commit()
conn.close()
图像文字翻译
在图像翻译过程中,通过 EasyOCR
提取图像中的文字,并结合翻译 API 进行实时翻译。
import easyocr
from googletrans import Translator
# 初始化 Reader 对象
reader = easyocr.Reader(['ch_sim', 'en'])
# 识别图片中的文字
result = reader.readtext('image_with_text.jpg')
# 初始化翻译器
translator = Translator()
# 翻译识别出的文字
for res in result:
translated = translator.translate(res[1], dest='en')
print(f"原文: {res[1]}, 翻译: {translated.text}")
总结
EasyOCR
库是一个功能强大且易于使用的 OCR 工具,能够帮助开发者在各种应用场景中高效地提取图片中的文字。通过支持多语言、高效识别、手写文字识别和自定义模型,EasyOCR
提供了强大的功能和灵活的扩展能力。本文详细介绍了 EasyOCR
库的安装方法、主要特性、基本和高级功能,以及实际应用场景。希望本文能帮助大家全面掌握 EasyOCR
库的使用,并在实际项目中发挥其优势。无论是在文档数字化、数据录入自动化还是图像文字翻译中,EasyOCR
库都将是一个得力的工具。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。