python科研向论文检索篇——提取PDF文字以供全文信息检索

作者:ruierx

项目背景

写论文期间,下载了很多论文,但是很多读过一次就忘记了,隐约有印象在某篇论文里见过一个现象,但就是想不起来在哪里看的,这个时候如果有一个本地可以根据关键词检索所有论文全文的工具就好了。刚好,嘿嘿,咱会python,那就干吧!

流程图

工具包安装

本文使用pdfplumber实现PDF文件的文本提取,注意此包无法识别扫描生成的图片PDF。
安装 ------ pip install pdfplumber
另外为了复制拷贝文件方便,引入了python自带包shutil。

pdfplumber基本用法

import pdfplumberwith pdfplumber.open("path/to/file.pdf") as pdf:first_page = pdf.pages[0]print(first_page.chars[0])

pdfpliumber.open()用于打开pdf文件,此时该PDF文件生成一个类,可以使用它的属性调用它的内容,比如:

.pages为每个页面组成的列表,可用列表的方式调用每一页pdf,每一页又是一个.page的类,有属性.page_number表示页码,.width/.height表示页宽和页高等
一些常用的方法有:
page.extract_text()------提取页面中的文本,存储为一个字符串。
page.extract_words()------返回所有的单词及相关信息
page.extract_tables()------提取页面的表格

加亿点点细节

import pdfplumber
import shutil
from os import listdir, chdir, getcwd, system, path, mkdirchdir("./1/")
raw_list = listdir()
print('文件总数:', len(raw_list))while 1:keyword = input("请输入搜索关键字:").strip()insure = input("y/n")if insure == 'y':breakwhile 1:print("请选择检索模式:")print("1. 重新检索")print("2. 继续上次的检索")print("3. 将上次检索的结果存至关键词文件夹")choice = input("--->").strip()if choice == '1':filelist = listdir()with open("process.txt", 'w') as pro:pro.truncate()breakelif choice == '2':with open("../process.txt", 'r') as pro:filelist = pro.read().strip().split('\n')for f in filelist:raw_list.remove(f)filelist = raw_listbreakelif choice == '3':with open("../process.txt", 'r') as pro:filelist = pro.read().strip().split('\n')for f in filelist:raw_list.remove(f)filelist = raw_listisExists = path.exists(f'../{keyword}')if not isExists:mkdir(f'../{keyword}')for file in filelist:shutil.copyfile(file, f'../{keyword}/{file}')system("pause")exit(f"{keyword}--相关文件已存储至相应文件夹!")else:print('输入错误,重新输入!')print("剩余文件数:", len(filelist))n = 0
ns = len(filelist)
for file in filelist:n += 1print(f"正在检索({n}/{ns})中是否含有{keyword}------>" + file)with pdfplumber.open(file) as pdf:# firstpage = pdf.pages[0]# print(type(firstpage.extract_text()))sign = 0for page in pdf.pages:text = page.extract_text()if keyword in text:with open("../result.txt", 'a+') as res:res.write(keyword + '--->\n' + file +'----->页数:' + str(page.page_number) + '\n\n')print(keyword + '--->\n' + file +'----->页数:' + str(page.page_number) + '\n\n')sign = 1breakif sign == 0:with open("../process.txt", 'a+') as pro:pro.write(file + '\n')print("无相关信息!")system("pause")

管你看没看懂,干就完事了!
哈哈哈,开玩笑啦,以后有时间补充一下细节吧,最近实在太忙了,毕业再说啦!

参考资料

pdfplumber ·PyPI

python科研向论文检索篇——提取PDF文字以供全文信息检索相关推荐

  1. python自动化系列之提取pdf文字和图片

    在python中有许多开源的库可以处理Pdf文档,最常用的Pypdf2库可以读取文档,合并,分割pdf文档,但是也有局限性: 无法提取文档中的文字 提取PDF文字需要使用另外的库,如pdfplumbe ...

  2. python提取pdf文字_python基于pdfminer库提取pdf文字代码实例

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

  3. Python代码库OpenCV之12提取碑文文字并分割

    Python代码库OpenCV之11提取碑文文字并分割 代码参考 https://www.cnblogs.com/phil-chow/p/5612270.html 我在作者基础做了简单修改,目前适用于 ...

  4. 原创:《Python之路实战40篇》PDF高清版,限时下载!

    内容简介 1 <Python之路40篇实战 .pdf>包含Python篇.数据分析篇.机器学习篇等 3 大模块,目录如下: 下载方式 2 关注公众号「Python与算法社区」,后台回复一个 ...

  5. python提取pdf文字,python 提取pdf文字

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

  6. Python脚本工具,PyMuPDF批量提取PDF文件中的图片

    如何批量快速提取出PDF中的图片文件,你是否遇到这样的一个问题,尤其是PPT文件转换为PDF文件,需要快速提取其中的图片文件,如果你恰好会那么一点py,同时复制粘贴没问题的话,那么相信你也能够很轻松的 ...

  7. java提取PDF文字坐标

    常用java操作PDF的库有PDFbox和itext,下面我会介绍如何使用PDFbox和itext来提取PDF的文字坐标. 一.itext提取文字坐标 itext版本:5.5.6,低版本的可能没有提供 ...

  8. 【python自动化办公(10)】python利用pdfplumber库提取PDF文字以及表格内容(复杂表格字段数据的处理)

    利用pdfplumber提取文字 pdfplumber.open(pdf路径)/pdf.pages[页数]/page.extract_text() import os os.chdir('D:\\py ...

  9. 如何用Python批量提取PDF文本内容?

    本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析. 问题 最近,读者们在后台的留言,愈发五花八门了. 写了几篇关于自然语言处理的文章 ...

  10. python读取pdf表格_Python使用Tabula提取PDF表格数据

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

最新文章

  1. [推荐]Angular File Changer (Supporting Touch Bar and NgRx)→用于快速切换同名HTML/SCSS/TS文件,非常的实用
  2. jenkins内存溢出的一些解决过程
  3. 计算机转型展望未来大发展,市计算机:披荆斩棘砥砺前行,勠力同心展望未来...
  4. Promise的源码实现(完美符合Promise/A+规范)
  5. 【Qt】Qt数据库简介
  6. 大数系列之大数相加(ACM通过)(一)
  7. SAP Spartacus的login页面路由
  8. 在你的 iOS App中 使用 OpenSSL 库 转发
  9. php动态成本管理,网上审批系统环境下的动态目标成本管理
  10. java 遍历hashmap key_Java5种遍历HashMap数据的写法
  11. PHP语言 -- 发起流程
  12. 传智黑马java基础学习——day14
  13. 【gp数据库】建表语句万能模板
  14. idm由于法律原因无法下载怎么办?
  15. FLV无损转换MP4
  16. 每平每屋模型组件采集策略研究
  17. Logcat的操作使用方法
  18. Lect6_Value_Function_Approximation
  19. 中国各省GDP排名!!
  20. 月薪5万,微软中国研究院最新面试题

热门文章

  1. 在北京如何租房比较好?
  2. SEO常用辅助工具整合
  3. 电容元器件外观视觉检测系统方案设计-东莞康耐德
  4. 曲线任意里程中边桩坐标正反算(CASIO fx-4800P计算器)程序
  5. wps表格宏被禁用如何解禁_wps宏被禁用如何打开?
  6. java 爬取微信公众号文章 - 搜狗微信搜索
  7. 电子工程师必须知道的12个知识
  8. 基于PHP的旅游网站的设计与实现论文
  9. Java Graphics2D 在图片上画(微信昵称)含有特殊符号(Emoji)的文字
  10. 即时语音提示软件php,即时语音提示校对专家