【Python 常用脚本及命令系列 9 -- 图片文字识别 EasyOCR使用】

2023-10-31 14:20

本文主要是介绍【Python 常用脚本及命令系列 9 -- 图片文字识别 EasyOCR使用】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.1 EasyOCR 介绍
      • 1.1.1 EasyOCR 安装
      • 1.1.2 EasyOCR 使用方法
        • 1.1.2.1 EasyOCR 支持的语言种类
        • 1.1.2.2 EasyOCR 支持的图像格式
    • EasyOCR 提高图片文字识别正确率
    • 1.3 问题总结

1.1 EasyOCR 介绍

Python中有一个不错的OCR库-EasyOCR,在GitHub已有9700 star。它可以在python中调用,用来识别图像中的文字,并输出为文本。EasyOCR支持超过80种语言的识别,包括英语、中文(简繁)、阿拉伯文、日文等,并且该库在不断更新中,未来会支持更多的语言。

1.1.1 EasyOCR 安装

安装过程比较简单,使用 pip 或者 conda 安装。

pip install easyocr

如果用的PyPl源,安装起来可能会耽误些时间,建议大家用清华源安装,几十秒就能安装好。

pip install easyocr -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install easyocr -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host mirrors.aliyun.com

1.1.2 EasyOCR 使用方法

EasyOCR的用法非常简单,分为三步:

  • 创建识别对象;
  • 读取并识别图像;
  • 导出文本。
import easyocr # 创建一个Reader实例,设置语言为中文和英文 
reader = easyocr.Reader(['ch_sim','en']) # 使用Reader实例对图像进行OCR识别,输出结果为一个列表,列表中的每一项都包含了一段检测到的文字及其位置信息 
result = reader.readtext('image.jpg') # 打印结果 
for res in result: print(res)

所要识别的图片 image.jpg
请添加图片描述

执行完上面python脚本之后

sam@sam :~/temp/ocr$ python ocr.py
Neither CUDA nor MPS are available - defaulting to CPU. Note: This module is much faster with a GPU.
([[37, 1], [301, 1], [301, 39], [37, 39]], '1)  浏览器的基本概念', 0.8790523639612858)
([[6, 48], [109, 48], [109, 78], [6, 78]], '其他概念:', 0.8918609843422133)
([[6, 83], [409, 83], [409, 116], [6, 116]], '主页:  用户打开浏览器时默认打开的网页。', 0.7179599599835107)
([[5, 119], [783, 119], [783, 157], [5, 157]], '缓存:  为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进', 0.3508524500076062)
([[5, 158], [783, 158], [783, 195], [5, 195]], '行存储;当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样', 0.6076152055685993)
([[6, 200], [240, 200], [240, 232], [6, 232]], '就可以加速页面的阅览。', 0.9070523112038835)
([[5, 234], [793, 234], [793, 271], [5, 271]], 'coakies: 网站为了辨别用户身份进行跟踪而储存在用户本地终端上的简单文本类型', 0.5843855686035105)
([[8, 275], [495, 275], [495, 308], [8, 308]], '数据。由用户客户端计算机暂时或永久保存的信息。', 0.22526217768233806)
([[7, 310], [603, 310], [603, 347], [7, 347]], '历史记录:  指浏览器曾经浏览过的网站在计算机中的暂存倌息。', 0.4164423423661993)
([[616, 322], [782, 322], [782, 348], [616, 348]], 'CSDN @CodingCos', 0.9586506435731357)

识别文字的准确率还是很高的,接下来对文字部分进行抽取

for res in result:word = res[1]print(word)

在这里插入图片描述

1.1.2.1 EasyOCR 支持的语言种类

上面代码有一段参数[‘ch_sim’,‘en’],这是要识别的语言列表,因为图片有中文和英文,所以列表里添加了ch_sim(简体中文)、en(英文)。

可以一次传递多种语言,但并非所有语言都可以一起使用。英语与每种语言兼容,共享公共字符的语言通常相互兼容。

1.1.2.2 EasyOCR 支持的图像格式

上面传入了相对路径 image.jpg,还可以传递 OpenCV 图像对象(numpy数组)、图像字节文件、图像 URL

可以使用 Python 的 requests 库来下载图像。

以下是一个例子:

import easyocr 
import requests 
from PIL import Image 
from io import BytesIO # 创建一个OCR reader,语言设置为英文('en') 
reader = easyocr.Reader(['en']) # 图像的URL 
image_url = "https://example.com/image.jpg" # 使用requests获取图像 
response = requests.get(image_url) # 将图像内容转换为一个PIL Image对象 
image = Image.open(BytesIO(response.content)) # 读取并识别图像中的文本 
result = reader.readtext(image) # 输出识别结果 
for (bbox, text, prob) in result: print(f"Detected text: '{text}' with probability {prob}")

在上述代码中,requests.get(image_url)会从指定的URL下载图像,Image.open(BytesIO(response.content))会将下载的图像内容转换为一个可以被EasyOCR使用的PIL Image对象。
然后,reader.readtext(image)会识别图像中的文本。识别的文本可以包括标点符号,这取决于图像中的内容和 EasyOCR 的语言设置。

EasyOCR 提高图片文字识别正确率

有时候你可能会发现识别的结果并不准确。以下是一些可以提高EasyOCR识别正确率的方法:

  • 图片预处理:你可以尝试对图片进行一些预处理,以提高识别的准确性。例如,你可以使用图像处理库(如OpenCV)来调整图片的对比度和亮度,去除噪声,甚至使用一些更复杂的处理,如透视变换来校正图片的角度。在某些情况下,将图片转换为灰度图像或者二值图像也可能有助于提高识别的准确性。
  • 使用适当的语言设置:EasyOCR支持多种语言的识别,你应该确保你的语言设置正确。例如,如果你想识别的文字是中文,你应该在创建Reader时指定’ch_sim’或者’ch_tra’作为语言代码。
  • 调整识别参数:EasyOCR提供了一些可以调整的参数,如识别模型的选择,文本检测的精度等。你可以尝试调整这些参数,看是否可以提高识别的准确性。
  • 使用更高质量的图片:如果可能的话,尽量使用高分辨率和清晰度的图片。模糊或者低分辨率的图片可能导致识别的准确性降低。
  • 选择合适的OCR工具:EasyOCR虽然强大,但可能并不适合所有的场景。例如,对于一些特殊的字体或者复杂的背景,你可能需要使用更专业的OCR工具或服务。

1.3 问题总结

在使用脚本进行文字处理时遇到了下面问题

Anaconda中 python代码报错: AttributeError: module ‘PIL.Image’ has no attribute ‘Resampling’

解决方法
先卸载原有的pillow库

pip uninstall pillow

卸载完成装上 9.0.1 版本的 pillow:

 pip install pillow==9.0.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后会有下面log:
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pillow==9.0.1 in /usr/lib/python3/dist-packages (9.0.1)

安装完之后居然还是不行!!!

最后在网上搜索到 需要使用 pillow 9.1 到 9.3 的版本,然后又果断卸载再安装:

sudo pip uninstall pillow
pip install pillow==9.1.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

最后问题解决了!

这篇关于【Python 常用脚本及命令系列 9 -- 图片文字识别 EasyOCR使用】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/315950

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删