当前位置: 首页 > news >正文

蓝耘Ubantu服务器测试最新 PP-StructureV3 教程

一、服务器配置

二、安装Anaconda3

进入云服务器后删除minconda文件夹

官网: https://repo.anaconda.com/archive/

在里面找到自己系统的安装包,然后右击复制链接安装。

一定要选择Anaconda,因为很多依赖问题用Minconda容易报错。

wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh

进入到存放 Anaconda3-2024.10-1-Linux-x86_64.sh的文件下解压

bash Anaconda3-2024.10-1-Linux-x86_64.sh

创建和激活虚拟环境,建议用python3.10,因为我们用的最新版本的框架,不然会遇到如下报错。

conda create -n ppstructureV3 python=3.10 -y

conda activate ppstructureV3

 这是由 ​​Python 3.8 的类型注解限制​​ 导致的。在Python 3.9之前的版本中,原生类型(如list、dict)不能直接使用下标语法(如list[int]),必须使用typing模块中的泛型类型(如List[int])

三、安装paddlepaddle

参考安装官网:

使用教程 - PaddleOCR 文档

安装 - PaddleOCR 文档

3.1 查看系统最高支持的cuda版本

nvidia-smi

我的系统cuda支持最高版本12.4,cuda可以向下兼容,所以选择11.8版本的,不能选12.6

我们去官网开始使用_飞桨-源于产业实践的开源深度学习平台下载最新的3.0的版本paddlepaddle,一定要下载3.0的才有最新的ppstructureV3

 python -m pip install paddlepaddle-gpu==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/ 

 

3.2 安装paddleocr最新版(目前是3.0) 

python -m pip install paddleocr  # 默认是最新的

或者从源码安装(默认为开发分支):

python -m pip install "git+https://github.com/PaddlePaddle/PaddleOCR.git" 

 3.3 检测是否安装好相关环境

python -c "import paddle; paddle.utils.run_check()"

PaddlePaddle is installed successfully! Let's start deep learning with PaddlePaddle now. 说明 paddlepaddle-gpu安装成功。

 

四、图片测试 

4.1 一行代码快速测试

paddleocr pp_structurev3 -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/pp_structure_v3_demo.png

https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/pp_structure_v3_demo.png

测试图片原图

识别效果:

 

4.2 python角本测试本地的带框表格图片

新建3.py 和 png 文件保存图片

from paddleocr import PPStructureV3

import time  # 新增导入time模块

# 初始化模型(此步骤耗时不计入推理时间)

pipeline = PPStructureV3(device="gpu")

# 开始计时(精确到微秒级)

start_time = time.perf_counter()  # 网页1/网页2/网页5推荐的高精度计时方式

# 执行推理

output = pipeline.predict(r"/root/lanyun-tmp/png/信息.png")

# 结束计时并计算差值

elapsed = time.perf_counter() - start_time  # 网页6提到的精度控制方法

# 打印三位小数秒数(格式化为xxx.xxx秒)

print(f"推理耗时: {elapsed:.3f} 秒")  # 网页6中.3f实现三位小数

# 结果处理

for res in output:

    res.print()

    res.save_to_json(save_path="/root/lanyun-tmp/output")

    res.save_to_markdown(save_path="/root/lanyun-tmp/output")

测试图片:

 

输出结果:

用md工具打开那个文件可以看到,识别的准确度很高,仅仅序号7识别错了,但是印章信息还是不能识别,后续可能要用专门的印章识别工具。 

推理用时:8.48秒 速度很慢,相比ppocr同用文字识别的0.5s

 

资源使用情况:峰值 5 G (可以新开一个终端 pip install nvitop下载一个资源监控包,如何新的终端运行nvitop专门做资源检测终端)

4.3 测试4.1的非洲图片识别效果

4.4 测试公式图片

原图:

测试输出的md格式:

4.5 测试无框的身份证信息图片

测试图片:

输出的md格式:

推理耗时: 6.980 秒

可以看到,输出的内容模糊的还是看不到,但是比ppocr的输出结果好一点,至少输出内容语义没有断开。

五、PDF文件识别

参考官方代码修改得到下面代码

# 导入必要的模块

from pathlib import Path  # 用于处理文件路径

from paddleocr import PPStructureV3  # PaddleOCR的V3版文档结构分析模型

import time  # 新增导入time模块(当前代码中未使用,可能计划用于性能计时)

# 设置输入文件路径和输出目录

input_file = r"/root/lanyun-tmp/png/your_pdf.pdf"  # 需要处理的PDF文件路径

output_path = Path("/root/lanyun-tmp/output_pdf")  # 输出目录的Path对象

# 初始化PPStructureV3文档分析流水线

pipeline = PPStructureV3()

start_time = time.perf_counter()  # 记录推理开始时间

# 对输入文件进行结构化分析,获取包含文本和布局信息的输出结果

output = pipeline.predict(r"/root/lanyun-tmp/png/your_pdf.pdf")

end_time = time.perf_counter()  # 记录推理结束时间

# 打印推理耗时(单位:秒,保留3位小数)

print(f"\n[推理耗时] {end_time - start_time:.3f} 秒\n")

# 初始化存储Markdown内容和图片的列表

markdown_list = []  # 存储各页面的Markdown信息

markdown_images = []  # 存储各页面的图片数据

# 遍历处理每个页面的分析结果

for res in output:

    # 获取当前页面的Markdown格式信息

    md_info = res.markdown

    markdown_list.append(md_info)  # 将Markdown信息添加到列表

    # 提取当前页面的图片数据(如果有的话),并添加到图片列表

    markdown_images.append(md_info.get("markdown_images", {}))

print(markdown_list) # 测试有没有每一页的md信息

# 将多页的Markdown内容合并为完整的文档

# markdown_texts = pipeline.concatenate_markdown_pages(markdown_list)

# 手动合并多页Markdown内容

markdown_texts = "\n\n".join([

    page_res["markdown_text"]

    for page_res in markdown_list

    if page_res.get("markdown_text")

])

# 构建输出Markdown文件路径(保持与原文件同名,后缀改为.md)

mkd_file_path = output_path / f"{Path(input_file).stem}.md"

mkd_file_path.parent.mkdir(parents=True, exist_ok=True)  # 确保输出目录存在

# 将合并后的Markdown内容写入文件

with open(mkd_file_path, "w", encoding="utf-8") as f:

    f.write(markdown_texts)

# 处理并保存文档中的图片

for item in markdown_images:

    if item:  # 检查是否存在图片数据

        for path, image in item.items():  # 遍历图片路径和图片对象

            file_path = output_path / path  # 构建完整图片保存路径

            file_path.parent.mkdir(parents=True, exist_ok=True)  # 创建图片存储目录

            image.save(file_path)  # 保存图片到指定路径

注意 # markdown_texts = pipeline.concatenate_markdown_pages(markdown_list),我们最新版的也会出现下面的报错,应该是移除了这个函数。所以注释掉官方代码,重新写一个。

识别效果:时间8.055秒 

 

资源使用情况:

六、总结

1.  PP-StructureV3 的效果还可以尤其是对版面信息、有框图表格的识别效果。

2. 推理时间较长,后续看看百度的加速推理框架。

3. 对于身份证、营业执照等信息的抽取还是不行、后续看看 PP-Structure的kie模块。

 

相关文章:

  • eBay健康类目新标杆,单月24万单的选品公式与流量打法拆解
  • 程序代码篇---Python处理ESP32-S3-cam视频流
  • 分布式电源的配电网无功优化
  • 新导游入行规范与职业发展指导
  • 选择合适的Azure数据库监控工具
  • SOPHGO算能科技BM1688内存使用与编解码开发指南
  • 数据库主从集群 + GTID 实现高可用
  • 【android bluetooth 协议分析 02】【bluetooth hal 层详解 3】【高通蓝牙hal主要流程介绍-上】
  • Java SpringBoot 项目中 Redis 存储 Session 具体实现步骤
  • 虚拟机NAT模式获取不到ip
  • ConcurrentHashMap导致的死锁事故
  • 单片机设计_四轴飞行器(STM32)
  • 开源STM32F429汽车仪表盘基于LVGL界面
  • Rust 学习笔记:关于泛型的练习题
  • 打破性能瓶颈:用DBB重参数化模块优化YOLOv8检测头
  • 【Leetcode 每日一题】3356. 零数组变换 II
  • 极大似然估计与机器学习
  • 【图像大模型】深度解析RIFE: 基于中间流估计的实时视频插帧算法
  • 代码随想录算法训练营第60期第四十三天打卡
  • 高级学习算法(神经网络 决策树)
  • 网站拨测人员是干嘛的/站长工具在线查询
  • 360免费建站空间/网站页面优化包括
  • 嘉兴网站建设网站/郑州官网网站优化公司
  • 找别人做网站的注意事项/企业品牌推广
  • 重庆地区专业做网站的公司/中囯联通腾迅
  • java web音乐网站开发/今天重大新闻头条