Python实操 PDF自动识别并提取Excel文件

news2024/11/26 18:47:09

最近几天,paddleOCR开发了新的功能,通过将图片中的表格提取出来,效果还不错,今天,作者按照步骤测试了一波。

首先,讲下这个工具是干什么用的:它的功能主要是针对一张完整的PDF图片,可以对文档图片中的文本、表格、图片、标题与列表区域进行分类。同时还可以利用表格识别技术完整地提取表格结构信息,使得表格图片变为可编辑的Excel文件。如下图所示可以进行版面分析+表格识别。

核心技术在于两个:一个是PP-Structure的版面分析技术,另一个是PaddleDetection开源的高效检测算法PP-YOLO v2。

PP-Structure Pipeline介绍:

下面作者按照官网的说明进行安装(https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.2/ppstructure/README_ch.md):

#step1: 首先需要安装paddle
# GPU安装
python -m pip install paddlepaddle-gpu==2.1.1 -i https://mirror.baidu.com/pypi/simple

# CPU安装(作者在这里使用CPU安装)
 python -m pip install paddlepaddle==2.1.1 -i https://mirror.baidu.com/pypi/simple

#step2:安装 Layout-Parser
pip  install -U https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-any.whl

#step3:安装PaddleOCR(包含PP-OCR和PP-Structure)
pip install "paddleocr>=2.2"


这样就算安装好了,但是途中会有一些报错信息,一个是 "ImportError: DLL load failed: 找不到指定的模块。" ,在查阅了相关的资料之后,发现重新安装也没有用,作者是通过安装旧版本的软件,就解决了这个问题。另一个报错,是cv2.imread读取图像结果为none,这个错误是由于你的路径中有中文字体,全部修改为英文的即可。

接下来就是运行主要的程序代码,

1 import os
 2 import cv2
 3 from paddleocr import PPStructure,draw_structure_result,save_structure_res
 4 
 5 table_engine = PPStructure(show_log=True)
 6 
 7 #你的文件结果目录
 8 save_folder = 'C:/Users/hp/Desktop/pdf_ocr/output/table'
 9 
10 #输入的图片
11 img_path = 'C:/Users/hp/Desktop/pdf_ocr/table/5.png'
12 img = cv2.imread(img_path)
13 
14 result = table_engine(img)
15 save_structure_res(result, save_folder,os.path.basename(img_path).split('.')[0])
16 
17 for line in result:
18     line.pop('img')
19     print(line)
20 
21 from PIL import Image
22 
23 #字体路径,可以从paddleOCR的github上面下载
24 font_path = 'C:/Users/hp/Desktop/pdf_ocr/fonts/simfang.ttf'

25 image = Image.open(img_path).convert('RGB')
26 im_show = draw_structure_result(image, result,font_path=font_path)
27 im_show = Image.fromarray(im_show)
28 im_show.save('result.jpg')


运行完成后,每张图片会在​​output​​字段指定的目录下有一个同名目录,图片里的每个表格会存储为一个excel,图片区域会被裁剪之后保存下来,excel文件和图片名名为表格在图片里的坐标。

 这样,就可以看到识别出来的excel表格了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/993081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EasyAVFilter代码示例之将摄像机RTSP流转成RTMP推流输出

以下是一套完整的RTSP流转RTMP推流功能的开发源码,就简简单单几行代码,就可以完成原来ffmpeg很复杂的调用流程,而且还可以集成在自己的应用程序中调用,不需要再单独一个ffmpeg的进程来调用,方法很简单: #i…

spring中的@Configuration配置类和@Component

在Spring的开发工作中,基本都会使用配置注解,尤其以Component及Configuration为主,当然在Spring中还可以使用其他的注解来标注一个类为配置类,这是广义上的配置类概念,但是这里我们只讨论Component和Configuration&…

盲盒小程序开发方案

盲盒游戏作为一种富有趣味性和收藏价的虚拟盲盒产品,近年来在游戏市场中备受关注。本文将深入探讨盲盒游戏的开发方案,从市场趋势分析、用户体验设计、商业模式选择等多个维度,为开发者提供业且有深度的思考,以帮助他们在盲盒游戏…

容器编排学习(八)卷的概述与存储卷管理

一 卷 1 容器化带来的问题 容器中的文件在磁盘上是临时存放的,这给容器中运行的重要的应用程序带来一些问题 问题1:当容器崩溃或重启的时候,kubelet 会以干净的状态(镜像的状态)重启容器,容器内的历史数据会丢失 问题2&…

upload-labs1-17思路

1 直接写一个php文件测试一下,发现弹窗不让上传 原理很简单,就是把后缀名拿出来过滤一遍,而白名单就是弹窗的这三个 解决方法: 因为这是在前端防御的一个手段,所以直接在浏览器设置上禁用js就行了: 也可…

数据结构与算法_栈

一、什么是栈 栈是一种特殊的线性表,它只允许在固定的一端进行插入和删除的操作。 对数据进行插入和删除的一端叫做栈顶,另一端是栈底。 对栈的两项操作分别叫做入栈、出栈。 入栈就是对栈进行插入操作,除此之外,入栈也叫做进…

2023挖漏洞给报酬的网站汇总,兼职副业3天收益2000

一、众测平台(国内)二、前沿漏洞研究奖励计划三、行业SRC四、企业应急响应中心-SRC-汇总 1、互联网企业2、生活服务、住宿、购物相关企业3、物流、出行、旅游4、金融相关企业5、视频游戏直播社交娱乐6、教育、问答、知识付费7、泛科技通讯物联网云服务8、安全企业9、其他 一、…

渗透测试的八大步骤

渗透测试 其实很多安全漏洞都属于Web应用漏洞,这些Web漏洞可以通过渗透测试验证。渗透测试是利用模拟黑客攻击的方式,评估计算机网络系统安全性能的一种方法。这个过程是站在攻击者角度对系统的任何弱点、技术缺陷或漏洞进行主动分析,并且有…

【深度学习】Mini-Batch梯度下降法

Mini-Batch梯度下降法 在开始Mini-Batch算法开始之前,请确保你已经掌握梯度下降的最优化算法。 在训练神经网络时,使用向量化是加速训练速度的一个重要手段,它可以避免使用显式的for循环,并且调用经过大量优化的矩阵计算函数库。…

Vulnstack红队(一)

刚开始了解内网的时候做的,可能细节有问题的地方会比较多 0 - 环境配置 Vmware虚拟网络配置 三个靶机设置 Win7(添加一张网卡) VMnet1VMnet2Win2003 VMnet1Win2008 VMnet1 攻击机(kali)设置 VMnet2 网络拓扑 kali …

当电脑遇到msvcp110.dll丢失怎么办?最新解决方法分享

在使用电脑过程中,我们经常会遇到一些系统文件丢失的问题。其中,msvcp110.dll是Windows操作系统中的一个重要的动态链接库文件,它包含了许多与C运行库有关的函数和类。当系统中缺少或损坏这个文件时,可能会导致一些应用程序无法正…

细谈left join和join

👏作者简介:大家好,我是爱发博客的嗯哼,爱好Java的小菜鸟 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 📝社区论坛:希望大家能加入社区共同进步…

OpenCV 10(图像轮廓)

一、图像轮廓 图像轮廓是具有相同颜色或灰度的连续点的曲线. 轮廓在形状分析和物体的检测和识别中很有用。 轮廓的作用: - 用于图形分析 - 物体的识别和检测 注意点: - 为了检测的准确性,需要先对图像进行**二值化**或**Canny操作**。 - 画轮廓时会修改输入的图像…

【轻量化网络】MobileNet系列

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, CVPR2017 论文:https://arxiv.org/abs/1704.04861 代码: 解读:【图像分类】2017-MobileNetV1 CVPR_說詤榢的博客-CSDN博客 MobileNetV2: Inverted …

web 网页开发学习 之 vsc 的快捷方式便捷使用

我们想在vsc进行网页的开发如果能够掌握一些快捷键的技巧,那么对我们开发的帮助就会很大

windows弹出交互式服务检测怎么取消

现象 解决办法 打开控制面板->管理工具->服务->Interactive Services Detection 右键属性->常规选项卡中把启动类型选为禁用 禁用之后点击应用和确定 点击停止

Games202(P6、P7)环境光照与PRT全局光照

P6、实时环境光照 RealTime Environment Mapping 不同于全局光照 (1) IBL 我的Blog: QT with OpenGL(IBL-漫反射辐照)IBL-镜面反射(预滤波篇)IBL-镜面反射(LUT篇)QT with OpenGL(IBL-镜面反…

React refers to UMD global, but the current file is a module vite初始化react项目

vite搭建react项目 初始化项目 npm create vite 在执行完上面的命令后,npm 首先会自动下载create-vite这个第三方包,然后执行这个包中的项目初始化逻辑。输入项目名称之后按下回车,此时需要选择构建的前端框架: ✔ Project na…

机器人连续位姿同步插值轨迹规划—对数四元数、b样条曲线、c2连续位姿同步规划

简介:Smooth orientation planning is benefificial for the working performance and service life of industrial robots, keeping robots from violent impacts and shocks caused by discontinuous orientation planning. Nevertheless, the popular used quate…

Python对象序列化

迷途小书童的 Note 读完需要 7分钟 速读仅需 3 分钟 大家好,我是迷途小书童! 在 Python 开发中,我们经常需要将对象数据保存到磁盘,或者通过网络传输对象信息。这时就需要序列化,Pickle 库为我们提供了极为方便的对象序…