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

news2024/12/23 2:01:51

文章目录

    • 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

最后问题解决了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1153558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对话式AI驱动的计算机辅助设计【CAD】

大型语言模型 (LLM) 为 CAD 软件公司提供了通过对话式 AI 增强设计工作流程的新机会。 工程师无需浏览复杂的菜单,而是可以用简单的语言描述需求并接收由集成数据支持的智能响应。 例如,工程师可以通过询问“2 盎司以下的铝支架”来查询零件数据库。 LL…

荣获IoT最具潜力企业奖,美格智能引领AIoT应用变革

10月30日,2023第十届IoT大会在深圳盛大开幕。大会同期举办第八届IoT创新奖评选,美格智能顺利通过层层遴选,获颁“IoT最具潜力企业奖”。这一荣誉不仅是对公司目前研发水平、产品服务、业务发展及综合实力的高度认可,更是对创新能力…

基于SSM的高校疫情防控出入信息管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

2023年上海市初中生“爱我中华”主题征文的详细框架(续)

“中文自修杯”2023年上海市初中生“爱我中华”主题征文活动自由报名最后提交时间为今天(10月31日),请记得及时提交文稿。 前一篇文章,六分成长介绍了大家在提交征文时候的三个困惑以及解决方法。这篇文章继续为大家列出后面三个主…

springboot+vue基于Hadoop短视频流量数据分析与可视化系统的设计与实现【内含源码+文档+部署教程】

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

学习视频剪辑:如何从指定时段快速抽出视频图片!高效技巧分享

随着数字媒体的普及,越来越多的人开始接触视频剪辑。在视频剪辑过程中,有时候我们需要从指定时段快速抽出视频图片。这不仅可以帮助我们提高剪辑效率,还可以让我们的视频更加丰富多彩。本文将分享一些高效技巧,帮助你轻松实现从指…

关键点检测、姿态识别、目标检测、车牌识别等项目部署代码+数据集汇总

一、AI健身计数 1、图片视频检测 (cpu运行): 注:左上角为fps,左下角为次数统计。 1.哑铃弯举:12,14,16 详细环境安装教程:pyqt5AI健身CPU实时检测mediapipe 可视化界面…

react-组件生命周期

一、生命周期阶段 官方文档:https://zh-hans.legacy.reactjs.org/docs/react-component.html React组件生命周期可分为三个阶段:挂载、更新、卸载 挂载:当组件实例被创建并插入 DOM 中时。其生命周期调用顺序如下: constructor()s…

【Java每日一题】——第四十四题:综合案例:编程模拟智能手机和普通手机功能。(2023.10.31)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

广西建筑模板厂家:行业先锋,品质之选

在建筑行业繁荣发展的今天,广西建筑模板厂家作为产业链中的关键环节,扮演着举足轻重的角色。这些厂家以卓越的创新力、精湛的技术和优质的客户服务,为建筑行业提供了无数可靠的解决方案。 一、创新引领进步广西建筑模板厂家始终坚持创新是推动…

如何使用内网穿透远程访问Linux SVN服务?

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

基于javaweb的吃了吗管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

Oracle查询表结构、索引和备注

1, ORACLE 查询表结构 SELECT table_name, column_name, data_type,DATA_LENGTH,COLUMN_ID,user_tab_comments,user_col_comments FROM USER_TAB_COLUMNS WHERE table_name upper(T_Acc_Settle_Account);SELECT * FROM user_tab_columns WHERE table_nameT_Acc_Settle_Accoun…

C++进阶语法——STL 标准模板库(上)(Standard Template Library)【学习笔记(六)】

文章目录 STL 标准模板库1、 STL简介2、STL容器的类别3、STL迭代器的类别4、STL算法的类别5、泛型编程(generic programming)6、C模板(template)6.1 函数模板(function template)6.2 类模板(cla…

QVD-2023-19300:致远M1 usertokenservice反序列化RCE漏洞复现

文章目录 致远M1 usertokenservice反序列化RCE漏洞(QVD-2023-19300)复现0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 致远M1 usertokenservice反序列化RCE漏洞(QVD-2023-19300)复现 0x01 前言 免责声明&…

浅谈Redis的五大数据类型及其应用

前言 Redis是一种开源的内存数据结构存储系统,它支持多种数据类型,包括字符串String、列表list、集合、哈希表和有序集合。这些数据类型在Redis中有着广泛的应用场景,可以满足不同的业务需求。本文将介绍Redis的五大数据类型及其应用。 一、string数据类型 常用命令: …

腾讯云2023年双11活动,云服务器2核2G首年88元,领券最高省9999元!

腾讯云2023年双11大促活动正在火热进行中,腾讯云也是拿出了十足的诚意,个人企业用户均可领取代金券礼包,云服务器首年1.8折起,买1年送3个月! 一、活动时间 腾讯云2023年双11大促活动时间比较充足,一直持续…

股权比例设计的九条生命线

股权比例设计——绝对控制线67% 【释义】一些重大事项如公司的股本变化,关于公司的增减资,修改公司章程, 分立/合并、变更主营项目等重大决策,需要2/3以上(含2/3)票数支持的。 股权比例设计——相对控制线…

大学校园闲置物品出售交易平台源码 二手交易源码

jspssm(springspringMVCmybaits)mysql实现的校园二手市场交易平台, 前台主要实现的功能有: 按分类显示商品列表、搜索商品、登录注册、关注商品、 评论商品、购买商品、用户登录后购买商品、发布商品、查看订单、查看关注的商品…

CKS真题分析-2023年度

CKS备考 Killercoda Interactive Environments #模拟环境 考试大纲 CKS考试介绍01 kube-bench 修复不安全项有kube-apiserver、etcd和kubelet,要记住3个文件对应的路径02 Pod 指定 ServiceAccount注意 automountServiceAccountToken: false03默认网络策略ingress…