一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库
大家好,今天给大家分享一个基于PyTorch的OCR库EasyOCR
,它允许开发者通过简单的API调用来读取图片中的文本,无需复杂的模型训练过程。
项目介绍
EasyOCR
是一个基于Python的开源项目,它提供了一个简单易用的光学字符识别(OCR)工具,支持超过80种语言以及多种书写脚本,包括拉丁文、中文、阿拉伯文、天城体、西里尔文等。
EasyOCR
利用PyTorch作为其深度学习执行框架,展示了对人工智能和机器学习在文本识别领域的强大应用能力。
核心特点
多语言支持:支持超过 80 种语言和所有流行的书写系统,包括拉丁文、中文、阿拉伯文、梵文、西里尔文等,可满足全球用户处理不同语言文档的需求。
高准确性:对于正常图片文本识别,准确率能达到较高水平,无论是手写体还是印刷体都能够较为准确地识别,其深度学习模型能够学习不同语言的字符特征和书写风格,从而提高识别精度。
文本检测与识别功能兼具:不仅可以识别图片中的文本内容,还能检测出文本框的位置,以左上、右上、右下、左下坐标顺序依次返回,可应用于多种需要定位文本的场景,如文档排版分析、图像内容理解等。
支持 GPU 加速:配置好相应的 CUDA、PyTorch、Torchvision Python 环境后,可使用 GPU 进行加速,识别速度相比 CPU 快 6~7 倍,能够提高处理效率,更快地完成大量图片的文本识别任务。
易于使用:将所有功能封装到一个类中,通过简单的函数调用即可实现文本识别和检测。并且已经上传到 PyPI,可通过 pip 命令完成安装,使用 Python 调用非常方便。
技术架构
关键技术
-
CRAFT 算法:用于文本检测。
-
CRNN 模型:用于文本识别,由特征提取、序列标注和解码三个组件组成。
-
PyTorch:用于深度学习模型的训练和推理。
框架
-
Python:主要编程语言。
-
PyTorch:深度学习框架。
-
OpenCV:用于图像处理。
应用场景
文档数字化:帮助用户将纸质文档快速、准确地转换为电子文档,便于存储、检索和共享,提高文档管理的效率和便利性。
数据录入:能够自动化数据录入流程,减少人工输入的错误和时间成本,适用于处理大量表单、报表等数据的场景,如企业的财务数据录入、物流信息录入等。
多语言翻译:自动识别并提取不同语言的文本,为多语言翻译提供基础,方便跨国交流和信息共享,例如在处理跨国公司的文件、国际学术文献等方面有很大的应用价值。
内容审核:可以自动识别图像中的文本内容,用于内容审核和合规性检查,帮助用户快速筛选出包含特定关键词或不符合规定的文本信息,如在社交媒体、网络平台等的内容监管方面发挥作用。
其他场景:还可应用于金融领域的票据识别、互联网爬虫中的文本提取、支付系统中的二维码和条形码识别、大数据处理中的文本抓取和解析、车辆车牌识别等多种业务场景。
安装使用
安装
安装依赖
-
Python 环境:确保你已经安装了 Python 3.6 或更高版本。
-
CUDA 和 cuDNN(可选):如果你有 NVIDIA GPU 并希望使用 GPU 加速,请安装 CUDA 和 cuDNN。
-
PyTorch:EasyOCR 依赖于 PyTorch,因此需要先安装 PyTorch。
步骤 1:安装 PyTorch
首先,你需要安装 PyTorch。你可以根据你的系统配置和是否使用 GPU,在 PyTorch 官网 上找到合适的安装命令。例如,如果你使用的是 Windows 系统并且没有 GPU,可以使用以下命令:
pip install torch torchvision torchaudio
步骤 2:安装 EasyOCR
安装完 PyTorch 后,你可以通过 pip 安装 EasyOCR。
pip install easyocr
使用
可通过下列代码进行简单验证。
import easyocr
reader = easyocr.Reader(['ch_tra','en']) # 加载简体中文和英文模型
result = reader.readtext('chinese.jpg')
以此图片为例
将输出下列结果
[([[448, 111], [917, 111], [917, 243], [448, 243]],'高鐵左營站',0.9247),
([[454, 214], [629, 214], [629, 290], [454, 290]], 'HSR', 0.9931),
([[664, 222], [925, 222], [925, 302], [664, 302]],'Station',0.3260),
([[312, 306], [937, 306], [937, 445], [312, 445]],'汽車臨停接送區',0.7417),
([[482, 418], [633, 418], [633, 494], [482, 494]],'Kiss',0.9577),
([[331, 421], [453, 421], [453, 487], [331, 487]], 'Car', 0.9630),
([[653, 429], [769, 429], [769, 495], [653, 495]], 'and', 0.9243),
([[797, 429], [939, 429], [939, 497], [797, 497]],'Ride',0.6400)]
你可以通过设置detail=0
输出简单结果
result = reader.readtext('chinese.jpg', detail=0)
如果你有 GPU 并希望使用 GPU 加速,可以在创建 Reader 实例时设置 gpu=True
。
reader = easyocr.Reader(['ch_tra','en'], gpu=True)
总结
EasyOCR作为一个轻量级但功能强大的OCR库,为Python开发者提供了便捷的文字识别方案。虽然在某些复杂的场景下,EasyOCR的识别准确率可能不如一些商业OCR引擎,但对于大部分日常应用场景来说,EasyOCR已经足够胜任。相信随着EasyOCR的不断发展,它将在更多领域发挥其独特的作用。
项目地址
https://github.com/JaidedAI/EasyOCR
一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库 - BTool博客 - 在线工具软件,为开发者提供方便
相关文章:

一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库
大家好,今天给大家分享一个基于PyTorch的OCR库EasyOCR,它允许开发者通过简单的API调用来读取图片中的文本,无需复杂的模型训练过程。 项目介绍 EasyOCR 是一个基于Python的开源项目,它提供了一个简单易用的光学字符识别ÿ…...

Flink四大基石之CheckPoint(检查点) 的使用详解
目录 一、Checkpoint 剖析 State 与 Checkpoint 概念区分 设置 Checkpoint 实战 执行代码所需的服务与遇到的问题 二、重启策略解读 重启策略意义 代码示例与效果展示 三、SavePoint 与 Checkpoint 异同 操作步骤详解 四、总结 在大数据流式处理领域,Ap…...
JVM 常见面试题及解析(2024)
目录 一、JVM 基础概念 二、JVM 内存结构 三、类加载机制 四、垃圾回收机制 五、性能调优 六、实战问题 七、JVM 与其他技术结合 八、JVM 内部机制深化 九、JVM 相关概念拓展 十、故障排查与异常处理 一、JVM 基础概念 1、什么是 JVM?它的主要作用是…...

Python 调用 Umi-OCR API 批量识别图片/PDF文档数据
目录 一、需求分析 二、方案设计(概要/详细) 三、技术选型 四、OCR 测试 Demo 五、批量文件识别完整代码实现 六、总结 一、需求分析 市场部同事进行采购或给客户报价时,往往基于过往采购合同数据,给出现在采购或报价的金额…...

K8S资源之secret资源
secret资源介绍 secret用于敏感数据存储,底层基于base64编码,数据存储在etcd数据库中 应用场景举例: 数据库的用户名,密码,tls的证书ssh等服务的相关证书 secret的基础管理 1 在命令行响应式创建 1.响应式创建 …...

QT:信号和槽01
QT中什么是信号和槽 概念解释 在 Qt 中,信号(Signals)和槽(Slots)是一种用于对象间通信的机制。信号是对象发出的事件通知,而槽是接收并处理这些通知的函数。 例如,当用户点击一个按钮时&#…...
针对Qwen-Agent框架的Function Call及ReAct的源码阅读与解析:Agent基类篇
文章目录 Agent继承链Agent类总体架构初始化方法`__init__` 方法:`_init_tool` 方法:对话生成方法`_call_llm` 方法:工具调用方法`_call_tool` 方法:`_detect_tool` 方法:整体执行方法`run` 方法:`_run` 方法:`run_nonstream` 方法总结回顾本文在 基于Qwen-Agent框架的Functio…...
XML 查看器:深入理解与高效使用
XML 查看器:深入理解与高效使用 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它通过使用标签来定义数据结构,使得数据既易于人类阅读,也易于机器解析。在本文中,我们将探讨 XML 查看器的功能、重要性以及如何高效使用它们。 什么是 XML 查看器? XML 查看…...

《Vue零基础入门教程》第十五课:样式绑定
往期内容 《Vue零基础入门教程》第六课:基本选项 《Vue零基础入门教程》第八课:模板语法 《Vue零基础入门教程》第九课:插值语法细节 《Vue零基础入门教程》第十课:属性绑定指令 《Vue零基础入门教程》第十一课:事…...

以AI算力助推转型升级,暴雨亮相CCF中国存储大会
2024年11月29日-12月1日,CCF中国存储大会(CCF ChinaStorage 2024)在广州市长隆国际会展中心召开。本次会议以“存力、算力、智力”为主题,由中国计算机学会(CCF)主办,中山大学计算机学院、CCF信…...

【VMware】Ubuntu 虚拟机硬盘扩容教程(Ubuntu 22.04)
引言 想装个 Anaconda,发现 Ubuntu 硬盘空间不足。 步骤 虚拟机关机 编辑虚拟机设置 扩展硬盘容量 虚拟机开机 安装 gparted sudo apt install gparted启动 gparted sudo gparted右键sda3,调整分区大小 新大小拉满 应用全部操作 调整完成...
3D Bounce Ball Game 有什么技巧吗?
关于3D Bounce Ball Game(3D弹球游戏)的开发,以下是一些具体的技巧和实践建议: 1. 物理引擎的使用: 在Unity中,使用Rigidbody组件来为游戏对象添加物理属性,这样可以让物体受到重力影响并发…...
【SQL】实战--组合两个表
题目描述 表: Person ---------------------- | 列名 | 类型 | ---------------------- | PersonId | int | | FirstName | varchar | | LastName | varchar | ---------------------- personId 是该表的主键(具有唯一值的列)…...

Spring基于注解实现 AOP 切面功能
前言 在Spring AOP(Aspect-Oriented Programming)中,动态代理是常用的技术之一,用于在运行时动态地为目标对象生成代理对象, 并拦截其方法调用。Spring AOP 默认使用两种类型的动态代理机制:JDK 动态代理和…...

设计模式 更新ing
设计模式 1、六大原则1.1 单一设计原则 SRP1.2 开闭原则1.3 里氏替换原则1.4 迪米特法则1.5 接口隔离原则1.6 依赖倒置原则 2、工厂模式 1、六大原则 1.1 单一设计原则 SRP 一个类应该只有一个变化的原因 比如一个视频软件,区分不同的用户级别 包括访客࿰…...

Elasticsearch 进阶
核心概念 索引(Index) 一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索…...

【AI】Sklearn
长期更新,建议关注、收藏、点赞。 友情链接: AI中的数学_线代微积分概率论最优化 Python numpy_pandas_matplotlib_spicy 建议路线:机器学习->深度学习->强化学习 目录 预处理模型选择分类实例: 二分类比赛 网格搜索实例&…...
通过 JNI 实现 Java 与 Rust 的 Channel 消息传递
做纯粹的自己。“你要搞清楚自己人生的剧本——不是父母的续集,不是子女的前传,更不是朋友的外篇。对待生命你不妨再大胆一点,因为你好歹要失去它。如果这世上真有奇迹,那只是努力的另一个名字”。 一、crossbeam_channel 参考 crossbeam_channel - Rust crossbeam_channel…...

【老白学 Java】对象的起源 Object
对象的起源 Object 文章来源:《Head First Java》修炼感悟。 上一篇文章中,老白学习了抽象类和抽象方法,不禁感慨,原来 Java 还可以这样玩。 同时又有了新的疑问,这些父类从何而来的? 本篇文章老白来聊一聊…...

Ubuntu Linux操作系统
一、 安装和搭建 Thank you for downloading Ubuntu Desktop | Ubuntu (这里我们只提供一个下载地址,详细的下载安装可以参考其他博客) 二、ubuntu的用户使用 2.1 常规用户登陆方式 在系统root用户是无法直接登录的,因为root用户的权限过…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

Linux基础开发工具——vim工具
文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...

【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...
生成对抗网络(GAN)损失函数解读
GAN损失函数的形式: 以下是对每个部分的解读: 1. , :这个部分表示生成器(Generator)G的目标是最小化损失函数。 :判别器(Discriminator)D的目标是最大化损失函数。 GAN的训…...