Python提取pdf文字信息

需求

今天教务处导出来我们全年级的成绩,一看吓一跳,我们的名字怎么不在文件名里,只能一个个找吗。事情开始变得离谱起来,因为足足有800多份成绩。

不怕,人生苦短,我用Python,思路很简单,使用pdfminer读取pdf文件里的文字信息,剩下的就是一个时间复杂度为\(O(n)\)的查找问题了。

代码

  • 文件目录结构

其中 scores存放全学院的成绩,results保存查找结果,main.py是核心代码。

import os
from shutil import copy
from io import StringIO
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams score_dir = ".\scores" def readPdf(pdf_file): rsrcmgr = PDFResourceManager()
retstr = StringIO()
laparams = LAParams()
device = TextConverter(rsrcmgr=rsrcmgr, outfp=retstr, laparams=laparams) process_pdf(rsrcmgr=rsrcmgr, device=device, fp=pdf_file)
device.close() content = retstr.getvalue()
retstr.close() return content if __name__ == '__main__': list = ["王五", "张三", "李四"] file_list = os.listdir(score_dir) for i in file_list: # read pdf content
with open(os.path.join(score_dir, i), "rb") as f:
content = readPdf(f) # search name in content
for search_name in list:
if search_name in content:
# save to results
copy(os.path.join(score_dir, i), os.path.join("./results/", search_name + ".pdf"))
# # save time
# list.remove(search_name) if len(list) == 0:
break print("Search successfully!")

总结

复习了一些相关语法,os.listdir(score_dir)copy(os.path.join(score_dir, i), os.path.join("./results/", search_name + ".pdf"))

Python提取pdf文字信息的更多相关文章

  1. python 提取pdf文字

    安装pdfminer 库 windows 下安装pdfminer3k pip install pdfminer3k Liunx 下安装pdfminer pip install pdfminer 代码 ...

  2. 第一节:python提取PDF文档中的图片

    由于项目需要将PDF文档当中的图片转换成图片,所以参考了这篇文章https://blog.csdn.net/qq_15969343/article/details/81673302后项目得以解决. 1 ...

  3. 个人永久性免费-Excel催化剂功能第88波-批量提取pdf文件信息(图片、表格、文本等)

    日常办公场合中,除了常规的Excel.Word.PPT等文档外,还有一个不可忽略的文件格式是pdf格式,而对于想从pdf文件中获取信息时,常规方法将变得非常痛苦和麻烦.此篇给大家送一pdf文件提取信息 ...

  4. python获取页面文字信息

    # -*- coding: utf- -*- from selenium import webdriver import time, re,requests,os,time,random,traceb ...

  5. 利用python第三方库提取PDF文件的表格内容

    小爬最近接到一个棘手任务:需要提取手机话费电子发票PDF文件中的数据.接到这个任务的第一时间,小爬决定搜集各个地区各个时间段的电子发票文件,看看其中的差异点.粗略统计下来,PDF文件的表格框架是统一的 ...

  6. Python使用Tabula提取PDF表格数据

    今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样: python读取PDF无非就是三种方式(我所了解的),pdfminer.pdf2htmlEX 和 Tabula.综合考虑后,选择了 ...

  7. tika提取pdf信息异常

    org.apache.tika.sax.WriteOutContentHandler$WriteLimitReachedException: Your document contained more ...

  8. 使用CAJViewer 提取PDF文件中的文字

    使用 CAJViewer 7.2 软件,把pdf格式的文件提取出文字. 操作步骤参考:http://jingyan.baidu.com/article/d45ad148cd06e469552b800f ...

  9. 在线提取PDF中图片和文字

    无需下载软件,你就可以在线提取PDF中图片和文字,http://www.extractpdf.com/不仅可以获取本地PDF文档的图片和文字,还能获取远程PDF文档的图片和文字.如下图所示:结果本人测 ...

  10. 用PDFMiner从PDF中提取文本文字

    1.下载并安装PDFMiner 从https://pypi.python.org/pypi/pdfminer/下载PDFMineer wget https://pypi.python.org/pack ...

随机推荐

  1. 长连接网关技术专题(十一):揭秘腾讯公网TGW网关系统的技术架构演进

    本文由腾讯技术团队peter分享,原题"腾讯网关TGW架构演进之路",下文进行了排版和内容优化等. 1.引言 TGW全称Tencent Gateway,是一套实现多网统一接入,支持 ...

  2. 题解:AT_abc385_f [ABC385F] Visible Buildings

    小学二年级就会的基本一次函数知识. 抽象一下题意: 求 \(n\) 个点 \((X_i, H_i)\) 中任意两个点组成的直线的截距的最大值(不小于 \(0\),\(X_i\) 递增). 先说结论:先 ...

  3. MySQL---索引-性能-配置参数优化

    一般来说,要保证数据库的效率,要做好以下四个方面的工作:数 据库设计.sql语句优化.数据库参数配置.恰当的硬件资源和操作系统,这个顺序也表现了这四个工作对性能影响的大小.下面我们逐个阐明: 1.设计 ...

  4. 第九章 ThreadPoolExecutor源码解析

    ThreadPoolExecutor使用 + 工作机理 + 生命周期 1.最基础的线程池ThreadPoolExecutor 使用方式: 1 /** 2 * ThreadPoolExecutor测试类 ...

  5. webrtc-streamer实时播放监控

    公司要做web端监控实时播放,经过调研,webrtc-streamer的方式对前后端项目侵入最少,且没有延迟卡钝的现象. 一.准备工作 一个摄像头,摄像头对应的rtsp流链接,一台电脑,一个vue项目 ...

  6. Cuckoo Hash

    最近在看APSI中,涉及到了一些hash技术(朴素hash,置换hash,布谷鸟hash),Hash 技术是 PSI 协议中优化通信复杂度和计算杂度的重要工具之一,现在系统的认识一下! 更多关于哈希函 ...

  7. Fanatastic pg walkthrough 10 Easy

    nmap 发现9090 22 和3000端口 发现漏洞 但是不知道还能读到哪些敏感文件 hacktricks 看看 https://book.hacktricks.xyz/network-servic ...

  8. ubuntu配置笔记

    一.ubuntu的mnt/hgfs下共享文件夹设置 1.确认VMware Tools和共享目录设定已经完成,安装vmware tool sudo apt-get install open-vm-too ...

  9. 云电脑Win7系统安装报错详解:问题与解决方案

    本文分享自天翼云开发者社区<云电脑Win7系统安装报错详解:问题与解决方案>,作者:每日知识小分享 随着云计算技术的快速发展,越来越多的人开始使用云电脑.然而,在为云电脑安装Win7系统时 ...

  10. ORACLE11g数据中创建DB Link方法,用于跨oracle数据库查询数据

    ---查看该用户下已建立的DB link链接 SELECT * FROM DBA_DB_LINKS --创建语句 CREATE DATABASE LINK  连接名CONNECT TO 登录名  ID ...