超级好用、超准文字识别框架——飞浆PaddlePaddleOCR
xsobi 2024-12-08 19:31 1 浏览
简介
飞桨(PaddlePaddle)OCR(Optical Character Recognition)是一个开源的深度学习框架,用于文字识别任务。它提供了一系列强大的工具和模型,可以用于实现各种文本识别应用。
飞桨OCR主要包括以下几个方面的功能和特点:
- 文字检测(Text Detection):通过检测图像中的文本区域,确定文本的位置和边界框。
- 文字识别(Text Recognition):将检测到的文本区域进行识别,将图像中的文字转化为可读的文本内容。
- 文字方向检测(Text Direction Detection):自动检测文本的朝向,包括水平、垂直和倾斜等方向。
- 多语言支持:飞桨OCR可以处理多种语言的文字识别,包括中文、英文以及其他语种。
飞桨OCR提供了预训练的模型,例如EAST、CRNN和Rosetta等,这些模型可以在各种场景下进行文字识别。此外,飞桨OCR还提供了丰富的工具函数和API,方便用户进行模型训练、推理和部署。
项目介绍
项目连接:
https://github.com/PaddlePaddle/PaddleOCR
功能很强大,开源做以下检测项:
安装难点
使用该项目需要安装项目文件里的requirements.txt,里面的依赖包,其他的正常pip install都很顺利,就lanms-neo==1.0.2比较折腾,window环境要安装lanms-neo,Luix安装lanms;
pip install lanms-neo==1.0.2#没有安装Visual Studio无效
问题
报错: Microsoft Visual C++ 14.0 is required gcc:,gcc: error: /EHsc: No such file or directory ,gcc.exe’ failed with exit status 1
解决办法
我在网上找了很多方法试了,就是不想Visual Studio,但是都没成功!最后还是安装了Visual Studio 2022不想走弯路的直接按照一下安装。
安装的网址:
Microsoft C++ 生成工具 - Visual Studio
https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
下载 C++ Build Tools,并安装C++桌面开发,默认前几个就行
安装完成之后,在运行一下代码
pip install lanms-neo==1.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
模型缩写介绍
飞桨OCR(文字识别)中的一些常用模型和任务的缩写及其含义如下:
- DET:Text Detection(文字检测) DET模型用于检测图像中的文本区域,并确定文本的位置和边界框。
- CLS:Text Classification(文本分类) CLS模型用于将给定的文本分为不同的类别或标签。文字方向分类通常使用深度学习模型进行文本分类任务。
- E2E:End-to-End Text Recognition(端到端文字识别) E2E模型将文字检测和文字识别任务整合在一起,实现从图像到最终文本结果的完整识别过程。
- REC:Text Recognition(文字识别) REC模型用于将图像中的文字转换为可读的文本内容。文本识别模型可以使用传统的方法(如CRNN)或基于Transformer的方法(如Rosetta)。
- SR:Speech Recognition(语音识别) SR模型用于将语音信号转换为文字。通过训练深度学习模型,可以实现准确的语音识别任务。
- KIE:Knowledge Information Extraction(知识信息抽取) KIE模型用于从文本中提取有用的知识信息,例如实体识别、关系抽取和事件提取等任务。
这些缩写代表了OCR中涉及的不同任务和模型,通过组合使用它们,可以构建出适用于不同场景和需求的文字识别系统
模型推理调用
文本检测模型推理
文本检测模型推理,默认使用DB模型的配置参数。超轻量中文检测模型推理,可以执行如下命令:
# 下载超轻量中文检测模型:
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar
tar xf ch_PP-OCRv3_det_infer.tar
python3 tools/infer/predict_det.py --image_dir="./doc/imgs/00018069.jpg" --det_model_dir="./ch_PP-OCRv3_det_infer/"
可视化文本检测结果默认保存到./inference_results文件夹里面,结果文件的名称前缀为'det_res';
使用CPU进行预测,执行命令如下:
python3 tools/infer/predict_det.py --image_dir="./doc/imgs/1.jpg" --det_model_dir="./ch_PP-OCRv3_det_infer/" --use_gpu=False
文本识别模型推理
注意 PP-OCRv3的识别模型使用的输入shape为3,48,320, 如果使用其他识别模型,则需根据模型设置参数--rec_image_shape。此外,PP-OCRv3的识别模型默认使用的rec_algorithm为SVTR_LCNet,注意和原始SVTR的区别。
超轻量中文识别模型推理,可以执行如下命令:
# 下载超轻量中文识别模型:
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar
tar xf ch_PP-OCRv3_rec_infer.tar
python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words/ch/word_4.jpg" --rec_model_dir="./ch_PP-OCRv3_rec_infer/"
英文识别模型推理
英文识别模型推理,可以执行如下命令, 注意修改字典路径:
# 下载英文数字识别模型:
wget https://paddleocr.bj.bcebos.com/PP-OCRv3/english/en_PP-OCRv3_rec_infer.tar
tar xf en_PP-OCRv3_rec_infer.tar
python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words/en/word_1.png" --rec_model_dir="./en_PP-OCRv3_rec_infer/" --rec_char_dict_path="ppocr/utils/en_dict.txt"
方向分类模型推理
方向分类模型推理,可以执行如下命令:
# 下载超轻量中文方向分类器模型:
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar
tar xf ch_ppocr_mobile_v2.0_cls_infer.tar
python3 tools/infer/predict_cls.py --image_dir="./doc/imgs_words/ch/word_4.jpg" --cls_model_dir="ch_ppocr_mobile_v2.0_cls_infer"
文本检测、方向分类和文字识别串联推理
注意 PP-OCRv3的识别模型使用的输入shape为3,48,320, 如果使用其他识别模型,则需根据模型设置参数--rec_image_shape。此外,PP-OCRv3的识别模型默认使用的rec_algorithm为SVTR_LCNet,注意和原始SVTR的区别。
以超轻量中文OCR模型推理为例,在执行预测时,需要通过参数image_dir指定单张图像或者图像集合的路径,也支持PDF文件、参数det_model_dir,cls_model_dir和rec_model_dir分别指定检测,方向分类和识别的inference模型路径。参数use_angle_cls用于控制是否启用方向分类模型。use_mp表示是否使用多进程。total_process_num表示在使用多进程时的进程数。可视化识别结果默认保存到 ./inference_results 文件夹里面。
# 使用方向分类器
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/00018069.jpg" --det_model_dir="./ch_PP-OCRv3_det_infer/" --cls_model_dir="./cls/" --rec_model_dir="./ch_PP-OCRv3_rec_infer/" --use_angle_cls=true
# 不使用方向分类器
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/00018069.jpg" --det_model_dir="./ch_PP-OCRv3_det_infer/" --rec_model_dir="./ch_PP-OCRv3_rec_infer/" --use_angle_cls=false
# 使用多进程
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/00018069.jpg" --det_model_dir="./ch_PP-OCRv3_det_infer/" --rec_model_dir="./ch_PP-OCRv3_rec_infer/" --use_angle_cls=false --use_mp=True --total_process_num=6
# 使用PDF文件,可以通过使用`page_num`参数来控制推理前几页,默认为0,表示推理所有页
python3 tools/infer/predict_system.py --image_dir="./xxx.pdf" --det_model_dir="./ch_PP-OCRv3_det_infer/" --cls_model_dir="./cls/" --rec_model_dir="./ch_PP-OCRv3_rec_infer/" --use_angle_cls=true --page_num=2
附一张识别效果图
相关推荐
- 好用的云函数!后端低代码接口开发,零基础编写API接口
-
前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...
- 快速上手:Windows 平台上 cURL 命令的使用方法
-
在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...
- 使用 Golang net/http 包:基础入门与实战
-
简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
-
你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...
- window使用curl命令的注意事项 curl命令用法
-
cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...
- Linux 系统curl命令使用详解 linuxctrl
-
curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...
- Tornado 入门:初学者指南 tornados
-
Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...
- PHP Curl的简单使用 php curl formdata
-
本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
-
本章涵盖使用Actix提供静态网页...
- 我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些
-
这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...
- linux文件下载、服务器交互(curl)
-
基础环境curl命令描述...
- curl简单使用 curl sh
-
1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...
- 常用linux命令:curl 常用linux命令大全
-
//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...
- 三十七,Web渗透提高班之hack the box在线靶场注册及入门知识
-
一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...
- 一周热门
- 最近发表
-
- 好用的云函数!后端低代码接口开发,零基础编写API接口
- 快速上手:Windows 平台上 cURL 命令的使用方法
- 使用 Golang net/http 包:基础入门与实战
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
- window使用curl命令的注意事项 curl命令用法
- Linux 系统curl命令使用详解 linuxctrl
- Tornado 入门:初学者指南 tornados
- PHP Curl的简单使用 php curl formdata
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- strcat (25)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- element style (30)
- dedecms模版 (53)
- vs打不开 (29)
- nmap (30)
- webgl开发 (24)
- parse (24)
- c 视频教程下载 (33)
- paddleocr (28)
- listview排序 (33)
- firebug 使用 (31)
- transactionmanager (30)
- characterencodingfilter (33)
- getmonth (34)
- commandtimeout (30)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)