1、背景

PaddleOCR: 基于飞桨的OCR工具库,包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测、文本识别的训练算法。对pdf/word里的表格中识别出有效信息具有重要意义,比如从公司的财报表格里提取出利润、销售额等不同维度的统计指标,从审查报告、调研报告以及不同的合同,诊疗单的固定表格中提取出结构化的信息供下游使用的场景多,对提升自动化获取知识的有很大的作用。

2、PaddleOCR的原理

     paddleocr的套件组包括了:底座的paddlepaddle实现深度学习的通用框架、paddleocr实现图片的识别、ppstructure、paddleclas几大组件,其中paddleclas是用来进行分类的组件,PP-Structure实现从图片识别表格,图片会先经由Layout-Parser进行版面分析,在版面分析中,会对图片里的区域进行分类,包括文字、标题、图片、列表和表格等5类。对于前4类区域,直接使用PP-OCR完成对应区域文字检测与识别。对于表格类区域,经过表格结构化处理后,表格图片转换为相同表格样式的结构化文件。

paddleocr的整体架构如下:

paddleocr中模型的列表

3、PaddleOCR的安装过程

本次安装过程是在python3.8.13环境下安装,对 PyMuPDF要求python 3.8及以上。

(1)paddleocr 2.7.0版本。

依赖

(2)安装paddlepaddle 2.6.0版本。

安装paddlepaddle的依赖包如下:

astor==0.8.1,decorator==5.1.1,opt==einsum==3.3.0,paddlepaddle==2.6.0

(3)安装paddleclas的2.5.1版本

paddleclas的依赖包如下:

prettytable==3.9.0,ujson==5.9.0,opencv-python==4.6.0.66,pillow==10.2.0,tqdm==4.66.1,PyYAML==6.0.1,visualdl==2.5.3,scipy>=1.0.0,scikit-learn==1.3.2,gast==0.5.4,faiss-cpu==1.7.1.post3,easydict=1.11,paddleclas==2.5.1

(4)碰到问题解决:

a、Python3 No module named '_sqlite3'错误

解决方法:源码安装完sqlit后,再设定python的setup.py重新编译安装python。

b、在安装faiss-cpu的源码安装中出现:fatal error: ft2build.h: 没有那个文件或目录

解决方法:出现编译安装导致的一些问题,能通过安装whl文件来解决。

(5)总结:a、pip安装过程使用--no-dependencies选项:会防止pip安装此包的所有依赖库;使用--ignore-installed选项:会忽略已安装的依赖库,根据新的需要重新安装。

参照

https://www.cnblogs.com/laityguanguan/p/16186852.html

b、python的相关镜像有:

百度:https://mirror.baidu.com/pypi/simple

阿里云: Simple Index

中国科技大学: Simple Index

豆瓣(douban): Simple Index

清华大学: Simple Index

4、PaddleOCR的使用例子

首次使用paddleocr时会自动执行:

运行过程会自动加载:106个参数

解析结果如下:

解析png格式的图片报

libpng error: IDAT: bad parameters to zlib,经过一番研究没有解决,改成jpg格式后,正常识别。

识别结果:

从识别结果上看可分为三部分:第一部分是boundingbox的矩形框,四个点的坐标,依次按顺时针从左上、右上、右下、左下。带有boundingbox的图片如下

仔细分析了boundingbox的边框可以发现并不是标准的矩形框,会出现边框左宽右窄的情况。

5、paddleocr模型的训练:

        PaddleClas支持多种前沿图像分类、识别相关算法,发布产业级特色骨干网络PP-HGNetPP-LCNetv2、 PP-LCNetSSLD半监督知识蒸馏方案等模型,在此基础上打造PULC超轻量图像分类方案PP-ShiTu图像识别系统

doc/doc_ch/table_recognition.md · PaddlePaddle/PaddleOCR - Gitee.com

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐