蓝耘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模块。

 

<think>好的,我现在需要帮助用户在Ubuntu 18.04上安装LPMS-IG1驱动程序。根据用户提供的引用内容,特别是引用3,里面提到了几个步骤,包括访问Bitbucket仓库、赋予串口权限以及运行ROS命令。不过用户可能对整个过程不太熟悉,我需要逐步拆解并确保每个步骤都清晰。 首先,用户需要安装依赖项。引用1提到了一些必要的开发库,比如liblapack-dev、libsuitesparse-dev等。这些可能是编译驱动所必需的,所以安装这些依赖是第一步。我应该提醒用户运行sudo apt-get install命令来安装它们。 接下来,引用3中的第一步提到要访问一个Bitbucket仓库,地址是https://bitbucket.org/lpresearch/lpmsig1opensourcelib。用户需要克隆这个仓库到本地,可能需要使用git clone命令。假设用户已经安装了git,如果没有的话,可能需要先安装git。不过用户的问题是关于安装驱动,可能已经具备基本工具,但如果有必要的话,可以建议安装git。 然后,仓库中的代码可能需要编译。但引用3并没有详细说明如何编译,可能需要用户按照仓库内的说明执行,比如使用CMake或make。如果用户遇到编译错误,比如链接库找不到的问题,可以参考引用2中的解决方法,即安装对应的库或创建符号链接。比如,如果出现找不到-lXXX的错误,用户需要安装libXXX-dev,或者查找已安装的库路径是否正确。 之后,引用3的第二步提到赋予串口/dev/ttyUSB0权限,使用sudo chmod 777命令。这里需要注意,虽然赋予权限是常见的做法,但使用777可能会存在安全风险,可能需要建议用户更谨慎地设置权限,比如将用户加入dialout组,但根据引用3的步骤,用户可能更倾向于直接使用chmod,所以这里按照提供的步骤说明即可。 第三步是运行ROS命令,比如rosrun lpms_ig1 lpms_ig1_node,并指定端口和波特率参数。这表明该驱动程序可能需要ROS环境,用户可能已经安装了ROS,但需要确认ROS的版本是否兼容Ubuntu 18.04,比如ROS Melodic。如果用户没有安装ROS,可能需要先安装ROS,但引用中没有提到,所以可能假设用户已经具备ROS环境。如果用户没有安装ROS,可能需要额外指导,但根据问题描述,用户可能只需要安装驱动,而驱动依赖于ROS,所以可能需要提醒用户先安装ROS Melodic。 此外,可能需要提醒用户在工作区中编译包,比如使用catkin_make,将lpms_ig1包放入src目录下,然后编译并source setup.bash。引用3中的步骤可能省略了这些步骤,所以需要补充说明,确保用户正确编译ROS包。 最后,用户可能需要测试设备连接,确保传感器正确连接到USB端口,并使用正确的端口号,比如/dev/ttyUSB0或其他可能的设备节点。可能需要检查dmesg或ls /dev/tty*来确认设备名称。 总结步骤应该是:安装依赖、克隆仓库、编译代码(可能需要ROS环境)、赋予权限、运行节点。同时,需要处理可能的错误,如依赖缺失或权限问题。确保用户按照正确的顺序操作,并注意可能遇到的常见问题,比如编译错误或设备权限问题。</think>在Ubuntu 18.04上安装LPMS-IG1驱动程序的步骤如下: ### 步骤1:安装系统依赖 首先安装编译所需的依赖库: ```bash sudo apt-get update sudo apt-get install liblapack-dev libsuitesparse-dev libgflags-dev libgoogle-glog-dev libgtest-dev libcxsparse3 ``` 这些库支持数值计算和日志功能[^1]。 --- ### 步骤2:克隆代码仓库 访问Bitbucket仓库并克隆代码到本地: ```bash git clone https://bitbucket.org/lpresearch/lpmsig1opensourcelib.git ``` 建议将代码放在ROS工作空间的`src`目录下(需提前安装ROS Melodic)。 --- ### 步骤3:赋予串口权限 连接传感器后,赋予串口设备读写权限: ```bash sudo chmod 777 /dev/ttyUSB0 # 根据实际设备名称调整 ``` 更安全的方式是将用户加入`dialout`组: ```bash sudo usermod -aG dialout $USER # 重启后生效 ``` --- ### 步骤4:编译与运行 1. **编译ROS包** 在ROS工作空间根目录执行: ```bash catkin_make source devel/setup.bash ``` 2. **启动驱动节点** 根据传感器型号选择命令: ```bash rosrun lpms_ig1 lpms_ig1_node _port:=IG123290068004A _baudrate:=921600 # 蓝牙模式 # 或 rosrun lpms_ig1 lpms_curs3_node _port:=/dev/ttyUSB0 _baudrate:=921600 # USB模式 ``` --- ### 可能遇到的问题 1. **编译时提示缺少库** 若出现类似`/usr/bin/ld: 找不到 -lXXX`错误,安装对应开发库: ```bash sudo apt-get install libxxx-dev ``` 或通过`apt-file search libXXX.so`查找包名[^2]。 2. **设备未识别** 检查连接后使用`ls /dev/tty*`确认设备名称,可能需要重启或重插传感器。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AIGC_北苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值