头图

大家好,我是涛哥,本文内容来自 涛哥聊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 官方网站 获取安装命令。

特性

  1. 多语言支持:支持 80 多种语言,包括中文、英文、日文、韩文等。
  2. 易于使用:提供简单的 API,能够快速上手并进行 OCR 任务。
  3. 高效识别:基于深度学习的文本识别模型,具有高效的文字识别性能。
  4. 支持手写文字:能够识别手写文字,适用范围广泛。
  5. 自定义模型:支持用户使用自定义模型进行文字识别。

基本功能

初始化 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 库都将是一个得力的工具。


涛哥聊Python
59 声望37 粉丝