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-HGNet、PP-LCNetv2、 PP-LCNet和SSLD半监督知识蒸馏方案等模型,在此基础上打造PULC超轻量图像分类方案和PP-ShiTu图像识别系统
doc/doc_ch/table_recognition.md · PaddlePaddle/PaddleOCR - Gitee.com