本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。

原文链接:easyocr,一个超厉害的 Python 库!

大家好,今天为大家分享一个超厉害的 Python 库 - EasyOCR。

Github地址:https://github.com/JaidedAI/EasyOCR

光学字符识别(OCR)技术在现代图像处理和计算机视觉领域有着广泛的应用,能够将图片中的文字提取出来并转化为可编辑的文本。EasyOCR 是一个由 Jaided AI 开发的 Python 库,旨在提供简单而强大的 OCR 功能。它支持多种语言,易于使用,并且具有高效的识别性能。本文将详细介绍 EasyOCR 库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。

1 安装

要使用 EasyOCR 库,首先需要安装它。以下是安装步骤:

1.1 使用 pip 安装

可以通过 pip 直接安装 EasyOCR 及其依赖项:

pip install easyocr

1.2 安装 Pytorch

EasyOCR 依赖于 Pytorch,因此在安装 EasyOCR 之前,需要确保系统中已经安装了 Pytorch

可以根据自己的系统和 CUDA 版本,通过以下命令安装 Pytorch

pip install torch torchvision torchaudio

如果需要安装特定版本的 Pytorch,可以访问 Pytorch 官方网站 获取安装命令。

2 特性

  1. 多语言支持:支持 80 多种语言,包括中文、英文、日文、韩文等。

  2. 易于使用:提供简单的 API,能够快速上手并进行 OCR 任务。

  3. 高效识别:基于深度学习的文本识别模型,具有高效的文字识别性能。

  4. 支持手写文字:能够识别手写文字,适用范围广泛。

  5. 自定义模型:支持用户使用自定义模型进行文字识别。

3 基本功能

3.1 初始化 Reader 对象

在进行 OCR 操作之前,需要初始化一个 Reader 对象:

import easyocr

# 初始化支持中文和英文的 Reader 对象
reader = easyocr.Reader(['ch_sim', 'en'])

3.2 识别图片中的文字

可以使用 readtext 方法识别图片中的文字:

# 识别图片中的文字
result = reader.readtext('example.jpg')

# 输出识别结果
for res in result:
    print(f"文本内容: {res[1]}, 置信度: {res[2]}")

3.3 输出带有位置信息的识别结果

识别结果中包含文字的位置信息,可以用于进一步处理:

result = reader.readtext('example.jpg')

for res in result:
    print(f"位置信息: {res[0]}, 文本内容: {res[1]}, 置信度: {res[2]}")

4 高级功能

4.1 自定义识别模型

可以使用自定义的识别模型进行文字识别:

# 初始化使用自定义模型的 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')

4.2 处理多页 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]}")

4.3 识别手写文字

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]}")

5 实际应用场景

5.1 文档数字化

在文档数字化过程中,通过 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")

5.2 数据录入自动化

在数据录入过程中,通过 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()

5.3 图像文字翻译

在图像翻译过程中,通过 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}")

6 总结

EasyOCR 库是一个功能强大且易于使用的 OCR 工具,能够帮助开发者在各种应用场景中高效地提取图片中的文字。通过支持多语言、高效识别、手写文字识别和自定义模型,EasyOCR 提供了强大的功能和灵活的扩展能力。本文详细介绍了 EasyOCR 库的安装方法、主要特性、基本和高级功能,以及实际应用场景。希望本文能帮助大家全面掌握 EasyOCR 库的使用,并在实际项目中发挥其优势。无论是在文档数字化、数据录入自动化还是图像文字翻译中,EasyOCR 库都将是一个得力的工具。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐