python使用pdfplumber工具包加载pdf格式数据
说在前面
大问题,对于两栏pdf数据,我这边提取出来的数据发现它很离谱。
它居然直接忽略了两栏特性,直接将第1栏的句子拼接上了第2栏的句子
解决方法:pypdf2尝试后可以正确识别两栏数据,非常棒。
示例
pdfplumber代码
# 使用pdfplumber读取文件pdf_path = "./data/shakespeare.pdf"的第133页到1781页的数据,
# 并每200个words组成一个样本数据,每个样本数据单独一行,把所有分割的数据保存到txt文本中,和csv文件格式。
# 两种格式都要保存,csv有两列,第1列是id编号,第2列是每200个words数据。
# 问题:它对于两栏pdf数据不友好,它居然直接忽略的两栏,直接将第1栏的句子拼接上了第2栏的句子,很离谱,import pdfplumber
import csv
from tqdm import tqdm# PDF 文件路径
pdf_path = "./data/shakespeare.pdf"# 输出文件路径
output_txt_path = "./data/shakespeare_samples.txt"
output_csv_path = "./data/shakespeare_samples.csv"# 提取指定页码范围内的文本
def extract_text_from_pdf(pdf_path, start_page, end_page):text = ""with pdfplumber.open(pdf_path) as pdf:for page_num in tqdm(range(start_page - 1, end_page), desc="提取指定页码范围内的文本"): # 页码从0开始text += pdf.pages[page_num].extract_text() + " "return text# 分割文本为每200个单词一个样本
def split_text_into_samples(text, words_per_sample=200):words = text.split()samples = [" ".join(words[i:i + words_per_sample]) for i in tqdm(range(0, len(words), words_per_sample), desc="分割文本为每200个单词一个样本")]return samples# 保存样本数据到TXT文件
def save_samples_to_txt(samples, output_path):with open(output_path, "w", encoding="utf-8") as txt_file:for sample in tqdm(samples, desc="保存样本数据到TXT文件"):txt_file.write(sample + "\n")# 保存样本数据到CSV文件
def save_samples_to_csv(samples, output_path):with open(output_path, "w", newline="", encoding="utf-8") as csv_file:writer = csv.writer(csv_file)writer.writerow(["id", "text"]) # 写入表头for idx, sample in tqdm(enumerate(samples), desc="保存样本数据到CSV文件"):writer.writerow([idx + 1, sample])# 主流程
if __name__ == "__main__":# 提取文本start_page = 134# end_page = 1782end_page = 140extracted_text = extract_text_from_pdf(pdf_path, start_page, end_page)# 分割为样本samples = split_text_into_samples(extracted_text, words_per_sample=200)# 保存到文件save_samples_to_txt(samples, output_txt_path)save_samples_to_csv(samples, output_csv_path)print(f"样本数据已保存到:\nTXT文件: {output_txt_path}\nCSV文件: {output_csv_path}")
相关文章:
python使用pdfplumber工具包加载pdf格式数据
说在前面 大问题,对于两栏pdf数据,我这边提取出来的数据发现它很离谱。 它居然直接忽略了两栏特性,直接将第1栏的句子拼接上了第2栏的句子 解决方法:pypdf2尝试后可以正确识别两栏数据,非常棒。 示例 pdfplumber代…...
C++设计模式:代理模式(Proxy)(附案例代码)
什么是代理模式? 代理模式是一种结构型设计模式,主要用于为某个对象提供一个代理,以便在不直接访问对象的情况下控制对其的访问。代理可以在客户端和目标对象之间起到一个中介的作用,添加一些额外的操作,例如权限控制…...
Y20030028 JAVA+SSM+MYSQL+LW+基于JAVA的考研监督互助系统的设计与实现 源代码 配置 文档
基于JAVA的考研监督互助系统 1.项目描述2. 课题开发背景及意义3.项目功能4.界面展示5.源码获取 1.项目描述 随着高等教育的普及和就业竞争的加剧,越来越多的学生选择继续深造,参加研究生入学考试。考研人数的不断增加,使得考研过程中的学习监…...
《Java核心技术I》volatile字段
volatile字段 有多处理器的计算机能够暂时在寄存器或本地内存缓存中保存内存值,其结果是,运行在不同处理器上的线程可能看到同一个内存位置上有不同的值。编译器可以改变指令执行的顺序以使吞吐量更大化,编译器不会选择可能改变代码语义的顺…...
使用Hadoop MapReduce进行大规模数据爬取
Hadoop MapReduce概述 Hadoop MapReduce是一个编程模型,用于处理和生成大数据集。它由Map和Reduce两个主要阶段组成。Map阶段负责处理输入数据,并将结果输出为键值对;Reduce阶段则对Map阶段的输出进行汇总和合并,生成最终结果。 …...
git 删除大文件的方法
1 首先 首先要提交所有的更改 git filter-branch -f --prune-empty --index-filter “git rm -rf --cached --ignore-unmatch 文件相对路径复制到这里” --tag-name-filter cat – --all 2 提交 git commit -am “d” git push...
qt数据类型定义(包含签名)
先推荐一个处理markdown表格的网站,超级好用:markdown表格处理,我就是用这个表格处理的excel中的数据上传。 下表整理了数据类型的值范围、签名、qt如何定义等内容。 类型范围/子类型dbus签名qt支持的签名qt类型定义方式转换为variantint8(…...
2025美赛数学建模常用数据库网站大全
优秀模板写作红宝书数学模型获取——更多资料请点击下方名片进群获取。 一、可以查询美国各个领域经济指标的网站: olap.epsnet.com.cnhttps://www.ers.usda.gov/data-products/rice-yearbook/www.ers.usda.govU.S. Energy Information Administration (EIA) www.eia.govhttp…...
Vue 组件通信全面解析
Vue 组件通信全面解析:方式、原理、优缺点及最佳实践 在 Vue 开发中,组件通信是一个重要的核心问题。随着应用复杂度的增加,如何在组件之间有效传递数据、触发事件,直接影响代码的可维护性和可扩展性。Vue 提供了多种组件通信方式…...
node.js基础学习-express框架-路由及中间件(十)
一、前言 Express 是一个简洁、灵活的 Node.js Web 应用框架。它基于 Node.js 的内置 HTTP 模块构建,提供了一系列用于构建 Web 应用程序和 API 的功能,使开发者能够更高效地处理 HTTP 请求和响应,专注于业务逻辑的实现。 其特点包括简单易用…...
书生浦语第四期--基础岛-第六关
文章目录 使用opencompass进行模型评价配置KEY环境变量以及API模型接口配置数据集进行评测开始评测测评结束 使用opencompass进行模型评价 配置KEY环境变量以及API模型接口 配置数据集进行评测 开始评测 期间可能遇到没有下载的包 例如,我遇到了: No m…...
flinkSql中累计窗口CUMULATE
eventTime package com.bigdata.day08;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;public class _05_flinkSql_Cumulate_eventTime {/*** 累积窗口 eventTime* …...
Flutter项目初始化android版
1、本机系统环境 window11flutter sdk 版本flutter_windows_3.24.5-stable.zip (下载地址:https://docs.flutter.dev/get-started/install/windows/mobile)android studio 版本 Android Studio Giraffe | 2022.3.1vscode 2、VSCODE 配置flutter 安装flutter插件 …...
深度相机获取实时图像总结
问题详情:之前一直把曝光调整到50000,画面一直很流畅,知道领导要求将曝光改成500000时整个程序卡死了 问题解决: 首先怀疑是帧率太低的原因,控制变量后发现不是帧率的问题,看着代码很迷茫,领导…...
突击检查:Java面试之多线程并发篇(11)
前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!什么是多线程中的上下文切换?什么是Daemon线程?它有什么意义?乐观锁和悲观锁的理解及如何实现,有哪些实现方式?似乎有…...
大数据新视界 -- 大数据大厂之 Hive 临时表与视图:灵活数据处理的技巧(上)(29 / 30)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
鸿蒙应用获取wifi连接的ip地址(官方文档获取的格式转换成192.168.1.xxx格式)
目录 一.背景 二.官网流程 wifiManager.getLinkedInfo9+ 三.转换成192.168.xxx.xxx格式 一.背景 本次来学习如何获取到鸿蒙设备连接wifi后的ip地址,由于官网文档中获取的ip地址和我们平时看到的192:168:xxx:xxx有所不同,需要进行下转换,所以记录下,如下的流程是在OpenH…...
Elastic Cloud Serverless:深入探讨大规模自动扩展和性能压力测试
作者:来自 Elastic David Brimley, Jason Bryan, Gareth Ellis 及 Stewart Miles 深入了解 Elasticsearch Cloud Serverless 如何动态扩展以处理海量数据和复杂查询。我们探索其在实际条件下的性能,深入了解其可靠性、效率和可扩展性。 简介 Elastic Cl…...
Leetcode经典题5--轮转数组
题目描述 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 输入输出示例 : 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右…...
【蓝桥杯每日一题】扫雷
扫雷 知识点 2024-12-3 蓝桥杯每日一题 扫雷 dfs (bfs也是可行的) 题目大意 在一个二维平面上放置这N个炸雷,每个炸雷的信息有$(x_i,y_i,r_i) $,前两个是坐标信息,第三个是爆炸半径。然后会输入M个排雷火箭࿰…...
以nlp为例,区分BatchNorm、LayerNorm、GroupNorm、RMSNorm
以nlp中一个小批次数据,详细区分BatchNorm、LayerNorm、GroupNorm、RMSNorm。这几种归一化的不同。如下表格,从计算范围、统计量、计算复杂度以及应用场景等方面的差异给出。 方法计算范围统计量计算复杂度应用场景BatchNorm跨所有句子的同一维度使用批…...
(软件测试文档大全)测试计划,测试报告,测试方案,压力测试报告,性能测试,等保测评,安全扫描测试,日常运维检查测试,功能测试等全下载
1. 引言 1.1. 编写目的 1.2. 项目背景 1.3. 读者对象 1.4. 参考资料 1.5. 术语与缩略语 2. 测试策略 2.1. 测试完成标准 2.2. 测试类型 2.2.1. 功能测试 2.2.2. 性能测试 2.2.3. 安全性与访问控制测试 2.3. 测试工具 3. 测试技术 4. 测试资源 4.1. 人员安排 4.2. 测试环境 4.2.…...
在MySQL中执行sum case when报错:SUM does not exist
1. 报错 在pgsql中能正常运行的一段SQL在MySQL中运行的时候报错了: SELECT DATE( hr.handle_time ) AS statsDate,SUM ( CASE WHEN hma.app_type IN ( 2, 5 ) THEN ch_money ELSE 0 END ) AS aliPayAmt,SUM ( CASE WHEN hma.app_type IN ( 1, 4 ) THEN ch_money EL…...
SQL面试题——日期交叉问题 合并日期重叠的活动
日期交叉问题—合并日期重叠的活动 今天的需求背景和前面我们的一个面试题目的背景一样,只不过是具体的需求变了,可以先看一下我们之前的文章SQL面试题——日期交叉问题 计算活动的总天数 +------+----------+----------+ | id| stt| ett| +------+--------…...
科普文:一文搞懂Postman
1. 概叙 1.1 Postman简介 Postman是一款强大的接口测试工具,主要用于测试HTTP请求,支持各种HTTP请求方法,包括GET、POST、PUT、DELETE等,并且提供了丰富的功能来模拟和测试各种网络请求。 Postman官网上这样介…...
LearnOpenGL学习(模型加载 -- Assimp,网格,模型)
完整代码见:zaizai77/Cherno-OpenGL: OpenGL 小白学习之路 Assimp 3D建模工具如Blender、3DS Max在导出模型文件时,会自动生成所有的顶点坐标、顶点法线和纹理坐标。 .obj 格式只包含了模型数据和材质信息(颜色、贴图等) Assi…...
基于Pyhton的人脸识别(Python 3.12+face_recognition库)
使用Python进行人脸编码和比较 简介 在这个教程中,我们将学习如何使用Python和face_recognition库来加载图像、提取人脸编码,并比较两个人脸是否相似。face_recognition库是一个强大的工具,它基于dlib的深度学习模型,可以轻松实…...
Scala的模式匹配(2)
package hfdobject Test34_2 {//match case匹配元组//能根据元组元素的个数来匹配,不是一一精确的匹配值def main(args: Array[String]): Unit {val d1(1,2,3) // val d1(1,2,3,4) // val d1(1,2,3,4,5)val d:Anyd1 //d的类型是Anyd match {case (x,y,z)>…...
Java 初学者的第一个 SpringBoot 系统
Java 初学者的第一个 SpringBoot 系统 对编程初学者而言,都存在一个 “第一个系统” 的问题。有些学习者找不到自己的 “第一个系统”,他们即使再努力也没有办法了解完整的系统,即使他们把教科书里的所有程序都跑通了。但是,面对…...
java IO面试题
目录 Java IO设计上使用了什么设计模式? 你怎么理解同步IO和异步IO? 字节流和字符流的区别? Java 流量有多少种类型? 如何将一个 java 将对象序列化到文件中? 如何实现 java 序列化? Filter流是什么? Filter流有哪些可用? 如何实现对象克隆? BIO、…...
Chocolatey软件包管理工具处理MSI升级的原理与实践
Chocolatey软件包管理工具处理MSI升级的原理与实践 在Windows环境下,Chocolatey作为一款强大的包管理工具,其处理MSI(Microsoft Installer)格式软件包升级的机制值得深入探讨。本文将详细介绍Chocolatey如何处理MSI升级ÿ…...
Navicat连接SQL Server及SpringBoot连接SQL Server(jtds)
Navicat连接SQL Server 安装自带的SQL Server客户端 去到Navicat安装目录,找到安装程序,安装即可。 安装对应版本的Microsoft ODBC Driver for SQL Server 打开Navicat输入对应的SQL Server相关信息 然后点测试连接,提示连接成功。 Spr…...
【Git】
博文将不断学习补充 Git下载 将下载链接复制到迅雷中,快速下载 Git安装 保持默认,傻瓜安装即可。 注册Gitee码云,设置公钥 在Git Bash中输入 ssh-keygen -t ed25519 -C "Gitee SSH Key" 找到对应的公钥文件 复制公钥,添…...
HttpServletRequest
HttpServletRequest 类确实是一个封装了完整 HTTP 请求信息的对象,而 Spring MVC 提供了更简化的方式来自动映射请求路径、请求参数等信息到控制器方法中。你不必直接使用 HttpServletRequest 来处理大部分常见的请求内容,因为 Spring MVC 会为你自动处理…...
Apache HttpClient 4和5访问没有有效证书的HTTPS
本文将展示如何配置Apache HttpClient 4和5以支持“接受所有”SSL。 目标很简单——访问没有有效证书的HTTPS URL。 SSLPeerUnverifiedException 在未配置SSL的情况下,尝试消费一个HTTPS URL时会遇到以下测试失败: Test void whenHttpsUrlIsConsumed…...
做异端中的异端 -- Emacs裸奔之路7: 怀念Vim的好
组合键的瑕疵 从Vim切换成Emacs之后,有一明显的不适就是感受Emacs的按键很硬, Vim移动是使用一个按完成的,而Emacs是组合键。 如果向前移动一个字,Vim只要在ESC模式下按w,而Emacs是Alt-f. 特别是当你对键盘改键之后不…...
asp.net core过滤器应用
筛选器类型 授权筛选器 授权过滤器是过滤器管道的第一个被执行的过滤器,用于系统授权。一般不会编写自定义的授权过滤器,而是配置授权策略或编写自定义授权策略。简单举个例子。 using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCo…...
VideoBooth: Diffusion-based Video Generation with Image Prompts
VideoBooth: Diffusion-based Video Generation with Image Prompts 概括 文章提出了一个视频生成模型VideoBooth,输入一张图片和一个文本提示词,即可输出保持图片中物体且符合文本提示词要求的视频。 方法 粗-细两阶段设计:1)…...
面阵相机的使用和注意事项
引言 面阵相机(Area Scan Camera)是一种广泛应用于工业视觉、医学成像、安防监控以及科研领域的图像采集设备。与线扫相机不同,面阵相机的传感器包含多行像素(例如1280x1024、1920x1080等),能够在一个曝光…...
人工智能与机器学习在智能扭矩系统中的应用
【大家好,我是唐Sun,唐Sun的唐,唐Sun的Sun。】 在当今科技飞速发展的时代,智能扭矩系统正经历着一场深刻的变革,而人工智能(AI)和机器学习算法的应用成为了推动这一变革的关键力量。 传统的扭矩…...
【附源码】基于环信鸿蒙IM SDK实现一个聊天Demo
项目背景 本项目基于环信IM 鸿蒙SDK 打造的鸿蒙IM Demo,完全适配HarmonyOS NEXT系统,实现了发送消息,添加好友等基础功能。代码开源,功能简洁,如果您有类似开发需求可以参考。 源码地址:https://github.c…...
【 AI技术赋能有限元分析与材料科学应用实践】Neo-Hookean 材料与深度学习结合的有限元分析
Neo-Hookean 材料模型是用于描述非线性弹性材料(如软组织和橡胶等)的经典模型,特别适用于大变形问题。其基本思想是通过应变能密度函数来描述材料的弹性行为。在该模型中,材料的应力-应变关系不仅依赖于应变能,还通过变…...
Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理-方法二
1.先导入数据到origin 2.导入文件的时候注意:名字短的这个是,或者你打开后看哪个里面有800,因为我的激光重频是1.25Hz(应该是,不太确定单位是KHz还是MHz),所以对应的时间是800s。 3.选中两列直接…...
LeetCode Hot100 51~60
图论51. 岛屿问题52. 腐烂的橘子53. 课程表54. 前缀树55. 全排列56. 子集57. 电话号码58. 组合总和59. 括号生成60. 单词搜索 图论 51. 岛屿问题 经典洪水问题算法 class Solution { public:int numIslands(vector<vector<char>>& grid) {int nr grid.size…...
第一节:ORIN NX介绍与基于sdkmanager的镜像烧录(包含ubuntu文件系统/CUDA/OpenCV/cudnn/TensorRT)
ORIN NX技术参数 Orin NX版本对比 如上图所示,ORIN NX官方发布的版本有两个版本一个版本是70TOPS算力,DDR为8GB的版本低配版本,一个是100TOPS算法,DDR为16GB的高配版本。 Orin NX的外设框图 两个版本除了GPU和DDR的差距外,外设基本上没有区别,丰富的外设接口,后续开发…...
使用Pygame创建一个简单的消消乐游戏
消消乐游戏是一种经典的益智游戏,玩家通过交换相邻的方块来形成三个或更多相同颜色的连续方块,从而消除它们。本文将介绍如何使用Python的Pygame库来创建一个简单的消消乐游戏。 准备工作 在开始之前,请确保已安装Pygame库。可以通过以下命…...
node.js基础学习-JWT登录鉴权(十四)
一、前言 JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在各方之间安全地传输信息。它本质上是一个字符串,由三部分组成:头部(Header)、载荷(Payload&am…...
AbutionGraph-时序向量图谱数据库-快速安装部署
运行环境 1)操作系统 最好是使用CentOS7或者Ubuntu18以上系统,不满足的话请升级系统内核gcc版本至8以上版本。 支持所有国产主流操作系统银河麒麟、统信OS、深度等等,均做过兼容性测试; 2)CPU 为确保数据库每个进…...
翻译质量差对电子课程用户体验的影响
电子学习改变了教育交付方式,使全球不同受众更容易获得课程。然而,随着这种学习模式的发展,对周到地本地化和翻译的需求也在增长。如果做得好,翻译可以弥合文化和语言分歧,创造无缝和包容的学习体验。然而,…...
PS的功能学习(修复、画笔)
混合器画笔工具 就像,电子毛笔 关键功能有两个,自带一个混合器色板 清理画笔是全清,换一支新的毛笔,执行完之后在判断是否载入画笔 载入画笔就是把前景色上的颜色进行叠加处理,重新混入当前的混合色 (…...