批量提取PDF指定区域内容到 Excel , 根据PDF文件第一行文字来自动重命名v1.3-附思路和代码实现

本次文章更新内容,图片以及扫描的PDF也可以支持批量提取指定区域内容了,主要是通过截图指定区域,然后使用OCR来识别该区域的文字来实现的,所以精度可能会有点不够,但是如果是数字的话,问题不大; 所以最好还是纯电子版本的PDF文件提取效果最好。


需求1:假如我有一批数量比较多的同样格式的PDF电子文档,需要把特定多个区域的数字或者文字提取出来

需求2:我有一批PDF文档,但是文件的名称都是一些乱码,我需要根据PDF文件里面第一页内容的第一行的标题文字来批量重命名这些文件

说明:不适应场景:如果多个PDF文件的需要提取内容的区域的位置不一样,比如我要提取的数字在第一个PDF文件在(30,30)的坐标,结果在第二个文件变成了(35,35)这个坐标,那么软件就会无法很好的提取这个内容文本,所以这个代码的适用范围是多个PDF文档格式一致,并且需要提取的文本信息所在的PDF位置都基本一样的情况下适用。

思路1:我们任意选一个PDF文件作为样本,然后用代码把要提取的区域用方框标注出来,再然后把这些区域的坐标保存下来,后续批量处理每个PDF的时候,就根据保存的这些区域坐标来提取对应位置的文字或者数字

思路示意图:

最后的结果示意图:

这种思路的缺陷和需要注意的点:

1 需要每个批量处理的文件要提取的数据的位置都是一样的,比如第一个PDF文件需要提取的数字位于【100,100】这个坐标,那么后续每个文件需要提取的数字都要位于这个位置,如有变动,就会导致提取不到需要的数据,可以通过扩大区域的坐标范围来一定程度上的解决这个问题

2 如果提取的文字不齐全,说明可能框选的方框略微小了一点,我代码里面设置了一个单独增大某个区域的功能


需求2思路:一批PDF文档的名称都是一些乱码,我需要根据PDF文件里面第一页内容的标题来批量重命名这些文件,实际上很简单,就是解析PDF文件,然后获取第一行的内容,然后重命名该文件即可,这个代码不复杂,就没放在本页了。

代码:

from typing import Optional, Dict, Listfrom solapi.magic_eden.site_api.utils.consts import MEAPIUrls
from solapi.magic_eden.site_api.utils.data import collection_stats_cleaner, collection_info_cleaner, \collection_list_stats_cleaner
from solapi.magic_eden.site_api.utils.types import MECollectionStats, MECollectionInfo, MECollectionMetrics
from solapi.utils.api import BaseApiclass MagicEdenCollectionApi(BaseApi):def get_collection_stats_dirty(self, symbol: str) -> Optional[Dict]:url = f'{MEAPIUrls.COLLECTION_STATS}{symbol}'res = self._get_request(url)return res.get('results') if isinstance(res, dict) else Nonedef get_collection_info_dirty(self, symbol: str) -> Optional[Dict]:url = f'{MEAPIUrls.COLLECTION_INFO}{symbol}'res = self._get_request(url)return res if bool(res) else Nonedef get_collection_stats(self, symbol: str) -> Optional[MECollectionStats]:data = self.get_collection_stats_dirty(symbol)if data:return collection_stats_cleaner(data)def get_collection_info(self, symbol: str) -> Optional[MECollectionInfo]:data = self.get_collection_info_dirty(symbol)if data:return collection_info_cleaner(data)def get_collection_list_stats_dirty(self):url = MEAPIUrls.COLLECTION_LIST_STATSres = self._get_request(url)return res.get('results') if isinstance(res, dict) else Nonedef get_collection_list_stats(self) -> Optional[List[MECollectionMetrics]]:data = self.get_collection_list_stats_dirty()if data:return list(map(lambda x: collection_list_stats_cleaner(x), data))def get_collection_list_dirty(self):url = MEAPIUrls.COLLECTION_LISTres = self._get_request(url)return res.get('collections') if isinstance(res, dict) else Nonedef get_collection_list(self) -> Optional[List[MECollectionInfo]]:data = self.get_collection_list_dirty()if data:return list(map(lambda x: collection_info_cleaner(x), data))

代码下载链接:

链接:https://pan.baidu.com/s/1WQQ8kaDilaagjoK5IrYZzA

提取码:1111

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

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

相关文章

一周年——相遇知音

——献给ZINCFFO 有梦便追,何惧? “杂乱无章”的代码片在昏暗的灯光下显得让人心生些许倦意。“我为什么天天都要练习呢?”无奈地合上笔记本电脑,当时多么想把电脑䣹(fāi)在地上,那就仿佛放下…

OpenGL笔记五之VBO与VAO

OpenGL笔记五之VBO与VAO 总结自bilibili赵新政老师的教程 code review! 文章目录 OpenGL笔记五之VBO与VAO1.VBO2.VAO3.VBO与VAO对比 1.VBO 代码 void prepareVBO() {//1 创建一个vbo *******还没有真正分配显存*********GLuint vbo 0;GL_CALL(glGenBuffers(1, &vbo))…

使用uni-app和Golang开发影音类小程序

在数字化时代,影音内容已成为人们日常生活中不可或缺的一部分。个人开发者如何快速构建一个功能丰富、性能优越的影音类小程序?本文将介绍如何使用uni-app前端框架和Golang后端语言来实现这一目标。 项目概述 本项目旨在开发一个个人影音类小程序&#…

微分方程建模

微分方程建模是数学建模的重要方法,因为许多实际问题的数学描述将导致求解微分方程的定解问题。在高教杯数学建模竞赛中每年都会有一道微分方程建模问题,大体上可以按以 下几步: 1. 根据实际要求确定要研究的量(自变量、未知函数、必要的参数…

云盘挂载 开机自动模拟 cmd- alist server

云盘挂载 开机自动模拟 cmd- alist server 打开Kimi智能助手, 网址:Kimi.ai - 帮你看更大的世界 (moonshot.cn) 问他: 帮我写一个vbs命令:在D:\sky目录下, 然后cmd, 进入命令行后, 输入 alist server 然后回车 这里 这个目录, 换成自己的 alist.exe所在目录 下面是我完善的示…

GitHub连接超时问题 Recv failure: Connection was reset

用手机热点WIF拉取git项目的时候,遇到Recv failure: Connection was reset问题。 解决办法 一、手动开启本地代理 二、在终端(cmd)输入命令 git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy https:…

大模型-基于大模型的数据标注

法来自于这篇论文:Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine。 一.背景 假设,存在一批标注好的数据D_labeled,其包含m个标注样本(x, y)。 目标是,基于D_labeled&#xff…

Linux安全技术与防火墙

一、安全技术和防火墙 1.1 安全技术 入侵检测系统:特点是不阻断网络访问,主要是提供报警和时候报警,不主动介入。 入侵防御系统:透明模式工作,对数据包、网络监控、服务攻击、木马蠕虫、系统漏洞等等进行准确的分析和…

MySql 数据库 (基础) - 下载安装

MySQL数据库 简单介绍 数据库 数据存储的仓库数据库管理系统 操作和管理数据库的大型软件SQL 操作关系型数据库的变成语言,是一套标准 版本 MySQL官方提供了两种不同的版本: 社区版 免费,MySQL不提供任何的技术支持商业版 收费&#xff0c…

【研路导航】重庆大学计算机保研面试真题分享交流

写在前面 在保研的道路上,面试是非常重要的一环。这里是成功保研到重庆大学的学长的计算机保研面试的部分真题及详细解答 ! Q 快速排序和合并排序: 快速排序(quicksort) 和合并排序(merge sort) 两种方法都将输入的待排序序列划分为2个子序列&#xf…

树的概念与二叉树的实现

目录 一. 树的概念 二. 访问树的方法 1. 左孩子右兄弟法 2. 双亲表示法 3. 顺序表存孩子的指针(孩子表示法) 三. 二叉树 1. 二叉树的定义 2. 特殊二叉树 3. 二叉树的性质 4. 存储方式 四. 二叉树的前中后序遍历 1. 前序遍历 2. 中序遍历 3. …

通用型I2C接口的应用之综合应用(N32G45XVL-STB)

通用型I2C接口的应用之综合应用(N32G45XVL-STB) 目录 概述 1 软硬件接口 1.1 硬件接口 1.2 开发软硬件信息 1.3 SHT-20模块电路 1.4 0.9寸OLED模块介绍 2 驱动接口实现 2.1 SHT20驱动接口 2.2 OLED驱动接口 3 应用接口实现 3.1 软件框架 3.…

C语言基础and数据结构

C语言程序和程序设计概述 程序:可以连续执行的一条条指令的集合 开发过程:C源程序(.c文件) --> 目标程序(.obj二进制文件,目标文件) --> 可执行文件(.exe文件) -->结果 在任何机器上可以运行C源程序生成的 .exe 文件 没有安装C语言集成开发环境,不能编译C语言程…

Open-TeleVision——通过VR沉浸式感受人形机器人视野的远程操作

前言 7.3日,我司大模型机器人(具身智能)线下营群里的一学员发了《Open-TeleVision: Teleoperation with Immersive Active Visual Feedback》这篇论文的链接,我当时快速看了一遍,还是有价值的一个工作(其有受mobile aloha工作的启发)&#x…

锂电池剩余寿命预测 | Matlab基于Transformer的锂电池剩余寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于Transformer的锂电池剩余寿命预测 Matlab基于Transformer的锂电池剩余寿命预测(单变量) 运行环境Matlab2023b及以上 NASA数据集,B0005号电池数据训练,B00…

web前端开发——标签一(注释、标题、段落、换行、格式、图片)

今天我来针对web前端开发讲解标签一 目录 html标签_标题&段落&换行 注释标签:Ctrl/ 标题标签: h1-h6 段落标签: 换行标签: 格式标签 图片标签_src属性 html标签_标题&段落&换行 注释标签:Ctrl/ Ctrl/ &…

小程序-设置环境变量

在实际开发中,不同的开发环境,调用的接口地址是不一样的 例如:开发环境需要调用开发版的接口地址,生产环境需要正式版的接口地址 这时候,我们就可以使用小程序提供了 wx.getAccountInfoSync() 接口,用来获取…

查找PPT中某种字体的全部对应文字

本文章的目的是找到某种字体的文字,而不是替换某种字体的文字,也不是将某种字体全部替换为另外一种文字。 第一步:在PPT中按下ALTF11 出现以下窗口 第二步:点击插入->模块 第三步:将以下代码输入到窗体中 Sub F…

树的结构(b,b+树)

无论线性表,栈还是队列,都是一对一,查询的时候,效率较低,数据量比较的大的情况 1.树的定义 一种数据结构,有层次关系的集合,根朝上,叶朝下 除了根节点外,每个子节点都…

论文翻译:Large Language Models for Education: A Survey and Outlook

https://arxiv.org/abs/2403.18105 目录 教育领域的大型语言模型:一项调查和展望摘要1. 引言2. 教育应用中的LLM2.1 概述2.2 学习辅助2.2.1 问题解决(QS) 2.2.2 错误纠正(EC)2.2.3 困惑助手(CH)…