百度飞浆OCR识别表格入门python实践

1. 百度飞桨(PaddlePaddle)

百度飞桨(PaddlePaddle)是百度推出的一款深度学习平台,旨在为开发者提供强大的深度学习框架和工具。飞桨提供了包括OCR(光学字符识别)在内的多种功能,可以帮助开发者在各种应用中实现高效的文本识别。官网链接:https://www.paddlepaddle.org.cn/。

初次使用,安装:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple paddlepaddle

验证安装,使用 python 进入 python 解释器,输入 import paddle ,再输入 paddle.utils.run_check()。

python

Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

import paddle

paddle.utils.run_check()

Running verify PaddlePaddle program ...

I0904 17:11:21.570567 15712 interpretercore.cc:237] New Executor is Running.

I0904 17:11:21.702833 15712 interpreter_util.cc:518] Standalone Executor is Used.

PaddlePaddle works well on 1 CPU.

PaddlePaddle is installed successfully! Let's start deep learning with PaddlePaddle now.

2. 飞桨OCR

飞桨文字识别开发套件PaddleOCR,旨在打造一套丰富、领先且实用的OCR工具库,开源了基于PP-OCR实用的超轻量中英文OCR模型、通用中英文OCR模型,以及德法日韩等多语言OCR模型。并提供上述模型训练方法和多种预测部署方式。同时开源文本风格数据合成工具Style-Text和半自动文本图像标注工具PPOCRLable。

飞桨OCR文字简明识别过程如下图所示。

2.1. 安装飞桨OCR

如果你有企业中明确的 OCR 垂类应用需求,我们推荐你使用训压推一站式全流程高效率开发平台 PaddleX,助力 AI 技术快速落地。

首先,下载shapely安装包(地址:https://www.lfd.uci.edu/\~gohlke/pythonlibs/),并安装。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple e:\software\python\Shapely-1.8.2-cp38-cp38-win_amd64.whl

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple paddleocr

通用OCR文字识别,首个样例。

python 复制代码
from paddleocr import PaddleOCR, draw_ocr

# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
img_path = './imgs/11.jpg'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    for line in res:
        print(line)

# 显示结果
from PIL import Image
result = result[0]
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores, font_path='./fonts/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

我的python环境,供参考:

  • 操作系统:windows 10 专业版 版本 22H2
  • python 3.8.10
  • 安装包内容如下详见附件

2.2. PP-Structure 快速开始

PP-Structure是一个基于PaddlePaddle的表格结构识别工具包,可以帮助开发者快速进行表格结构的识别和提取。

图表识别,输入图像如下图,带水印的网页表格:

官方示例代码:

python 复制代码
import os
import cv2
from paddleocr import PPStructure,draw_structure_result,save_structure_res

table_engine = PPStructure(show_log=True)

save_folder = 'output'
img_path = 'img/12.jpg'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result, save_folder,os.path.basename(img_path).split('.')[0])

for line in result:
    line.pop('img')
    print(line)

from PIL import Image

font_path = 'C:\Windows\Fonts\simfang.ttf'   # PaddleOCR下提供字体包
image = Image.open(img_path).convert('RGB')
im_show = draw_structure_result(image, result,font_path=font_path)
im_show = Image.fromarray(im_show)
im_show.save('result2.jpg')
download https://paddleocr.bj.bcebos.com/ppstructure/models/slanet/ch_ppstructure_mobile_v2.0_SLANet_infer.tar to 
C:\Users\xiaoyw/.paddleocr/whl\table\ch_ppstructure_mobile_v2.0_SLANet_infer\ch_ppstructure_mobile_v2.0_SLANet_infer.tar
100%| 10.3M/10.3M [00:01<00:00, 6.69MiB/s]
download https://paddleocr.bj.bcebos.com/ppstructure/models/layout/picodet_lcnet_x1_0_fgd_layout_cdla_infer.tar to 
C:\Users\xiaoyw/.paddleocr/whl\layout\picodet_lcnet_x1_0_fgd_layout_cdla_infer\picodet_lcnet_x1_0_fgd_layout_cdla_infer.tar
100%|| 10.1M/10.1M [00:00<00:00, 10.2MiB/s]

参考:

VipSoft. 百度飞桨(PaddlePaddle) - PaddleHub OCR 文字识别简单使用. 博客园. 2023.05

汽车人. Pytorch 和 TensorFlow 和 PaddlePaddle 这三个框架有什么区别?. 知乎. 2022.08

https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppstructure/docs/quickstart.md

附件:

Package                   Version
------------------------- -----------
anyio                     4.0.0
argon2-cffi               23.1.0
argon2-cffi-bindings      21.2.0
arrow                     1.2.3
astor                     0.8.1
asttokens                 2.3.0
async-lru                 2.0.4
attrdict                  2.0.1
attrs                     23.1.0
Babel                     2.12.1
backcall                  0.2.0
bce-python-sdk            0.8.90
beautifulsoup4            4.12.2
bleach                    6.0.0
blinker                   1.6.2
cachetools                5.3.1
certifi                   2023.7.22
cffi                      1.15.1
charset-normalizer        3.2.0
click                     8.1.7
colorama                  0.4.6
comm                      0.1.4
contourpy                 1.1.0
cssselect                 1.2.0
cssutils                  2.7.1
cycler                    0.11.0
Cython                    3.0.2
debugpy                   1.6.7.post1
decorator                 5.1.1
defusedxml                0.7.1
dnspython                 2.4.2
et-xmlfile                1.1.0
exceptiongroup            1.1.3
executing                 1.2.0
fastjsonschema            2.18.0
fire                      0.5.0
flask                     2.3.3
flask-babel               3.1.0
fonttools                 4.42.1
fqdn                      1.5.1
future                    0.18.3
h11                       0.14.0
httpcore                  0.17.3
httpx                     0.24.1
idna                      3.4
imageio                   2.31.3
imgaug                    0.4.0
importlib-metadata        6.8.0
importlib-resources       6.0.1
ipykernel                 6.25.1
ipython                   8.12.2
ipython-genutils          0.2.0
ipywidgets                8.1.0
isoduration               20.11.0
itsdangerous              2.1.2
jedi                      0.19.0
Jinja2                    3.1.2
joblib                    1.3.2
json5                     0.9.14
jsonpointer               2.4
jsonschema                4.19.0
jsonschema-specifications 2023.7.1
kiwisolver                1.4.5
lazy-loader               0.3
lmdb                      1.4.1
lxml                      4.9.3
MarkupSafe                2.1.3
matplotlib                3.7.2
matplotlib-inline         0.1.6
mistune                   3.0.1
nbclient                  0.8.0
nbconvert                 7.8.0
nbformat                  5.9.2
nest-asyncio              1.5.7
networkx                  3.1
notebook                  7.0.3
notebook-shim             0.2.3
numpy                     1.24.4
opencv-contrib-python     4.6.0.66
opencv-python             4.6.0.66
openpyxl                  3.1.2
opt-einsum                3.3.0
overrides                 7.4.0
packaging                 23.1
paddle-bfloat             0.1.7
paddleocr                 2.7.0.2
paddlepaddle              2.5.1
pandas                    2.0.3
pandocfilters             1.5.0
parso                     0.8.3
pdf2docx                  0.5.6
pickleshare               0.7.5
Pillow                    10.0.0
pip                       21.1.1
pkgutil-resolve-name      1.3.10
platformdirs              3.10.0
premailer                 3.10.0
prometheus-client         0.17.1
prompt-toolkit            3.0.39
protobuf                  3.20.2
psutil                    5.9.5
pure-eval                 0.2.2
pyclipper                 1.3.0.post4
pycparser                 2.21
pycryptodome              3.18.0
Pygments                  2.16.1
pymongo                   4.5.0
PyMuPDF                   1.20.2
pyparsing                 3.0.9
python-dateutil           2.8.2
python-docx               0.8.11
python-json-logger        2.0.7
pytz                      2023.3
PyWavelets                1.4.1
pywin32                   306
pywinpty                  2.0.11
PyYAML                    6.0.1
pyzmq                     25.1.1
qtconsole                 5.4.4
QtPy                      2.4.0
rapidfuzz                 3.2.0
rarfile                   4.0
referencing               0.30.2
requests                  2.31.0
rfc3339-validator         0.1.4
rfc3986-validator         0.1.1
rpds-py                   0.10.0
scikit-image              0.21.0
scikit-learn              1.3.0
scipy                     1.10.1
Send2Trash                1.8.2
setuptools                56.0.0
Shapely                   1.8.2
six                       1.16.0
sniffio                   1.3.0
soupsieve                 2.5
stack-data                0.6.2
termcolor                 2.3.0
terminado                 0.17.1
threadpoolctl             3.2.0
tifffile                  2023.7.10
tinycss2                  1.2.1
tomli                     2.0.1
tornado                   6.3.3
tqdm                      4.66.1
traitlets                 5.9.0
typing-extensions         4.7.1
tzdata                    2023.3
uri-template              1.3.0
urllib3                   2.0.4
visualdl                  2.5.3
wcwidth                   0.2.6
webcolors                 1.13
webencodings              0.5.1
websocket-client          1.6.2
werkzeug                  2.3.7
widgetsnbextension        4.0.8
zipp                      3.16.2
相关推荐
无须logic ᭄几秒前
CrypTen项目实践
python·机器学习·密码学·同态加密
Channing Lewis14 分钟前
flask常见问答题
后端·python·flask
Channing Lewis15 分钟前
如何保护 Flask API 的安全性?
后端·python·flask
水兵没月1 小时前
钉钉群机器人设置——python版本
python·机器人·钉钉
我想学LINUX2 小时前
【2024年华为OD机试】 (A卷,100分)- 微服务的集成测试(JavaScript&Java & Python&C/C++)
java·c语言·javascript·python·华为od·微服务·集成测试
数据小爬虫@5 小时前
深入解析:使用 Python 爬虫获取苏宁商品详情
开发语言·爬虫·python
健胃消食片片片片5 小时前
Python爬虫技术:高效数据收集与深度挖掘
开发语言·爬虫·python
ℳ₯㎕ddzོꦿ࿐8 小时前
解决Python 在 Flask 开发模式下定时任务启动两次的问题
开发语言·python·flask
CodeClimb8 小时前
【华为OD-E卷 - 第k个排列 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
一水鉴天8 小时前
为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
开发语言·人工智能·python