python读取pdf中的文本

python处理pdf也是常用的技术了,对于python3来说,pdfminer3k是一个非常好的工具。

pip install pdfminer3k

首先,为了满足大部分人的需求,我先给一个通用一点的脚本来读取pdf中的文本:

  1. from io import StringIO
  2. from io import open
  3. from pdfminer.converter import TextConverter
  4. from pdfminer.layout import LAParams
  5. from pdfminer.pdfinterp import PDFResourceManager, process_pdf
  6. def read_pdf(pdf):
  7. # resource manager
  8. rsrcmgr = PDFResourceManager()
  9. retstr = StringIO()
  10. laparams = LAParams()
  11. # device
  12. device = TextConverter(rsrcmgr, retstr, laparams=laparams)
  13. process_pdf(rsrcmgr, device, pdf)
  14. device.close()
  15. content = retstr.getvalue()
  16. retstr.close()
  17. # 获取所有行
  18. lines = str(content).split('\n')
  19. return lines
  20. if __name__ == '__main__':
  21. with open('t1.pdf', 'rb') as my_pdf:
  22. print(read_pdf(my_pdf))

我主要是想在pdf中抽出自己想要的一些关键信息,所以需要找到这些信息的共同点。幸运的是,这些关键信息的行都含有'//',所以我只需找到含有'//'的行就行了,于是写了以下脚本。

这样就可以直接使用了,我们先看脚本:

  1. from io import StringIO
  2. from io import open
  3. from pdfminer.converter import TextConverter
  4. from pdfminer.layout import LAParams
  5. from pdfminer.pdfinterp import PDFResourceManager, process_pdf
  6. def read_pdf(pdf):
  7. # resource manager
  8. rsrcmgr = PDFResourceManager()
  9. retstr = StringIO()
  10. laparams = LAParams()
  11. # device
  12. device = TextConverter(rsrcmgr, retstr, laparams=laparams)
  13. process_pdf(rsrcmgr, device, pdf)
  14. device.close()
  15. content = retstr.getvalue()
  16. retstr.close()
  17. # 获取所有行
  18. lines = str(content).split('\n')
  19. units = [1, 2, 3, 5, 7, 8, 9, 11, 12, 13]
  20. header = '\x0cUNIT '
  21. # print(lines[0:100])
  22. count = 0
  23. flag = False
  24. text = open('words.txt', 'w+')
  25. for line in lines:
  26. if line.startswith(header):
  27. flag = False
  28. count += 1
  29. if count in units:
  30. flag = True
  31. print(line)
  32. text.writelines(line + '\n')
  33. if '//' in line and flag:
  34. text_line = line.split('//')[0].split('. ')[-1]
  35. print(text_line)
  36. text.writelines(text_line+'\n')
  37. text.close()
  38. def _main():
  39. my_pdf = open('t1.pdf', 'rb')
  40. read_pdf(my_pdf)
  41. my_pdf.close()
  42. if __name__ == '__main__':
  43. _main()

其实看到lines =  str(content).split('\n')那一行就够了,我们可以把lines都print出来,就可以看到pdf里面的内容。

这样我们就可以把pdf文件处理看作简单的字符串数据处理了。接下来的脚本操作也不用过多解释了。

(0)

相关推荐

  • 高昂收费?你距离免费PDF编辑工具只差20行Python代码

    PDF(Portable Document Format,可携带文档格式)是一种以PostScript语言图像模型为基础,在不同电脑.打印机上都能够保持固定的格式.正是因为它这一特性,让PDF备受欢迎 ...

  • 读取pdf和docx文件,亲测有效

    做文本数据处理,我最怕遇到pdf和docx,一旦遇到了,都是双手开启无影指模式狂按快捷键.按的手抽,按的崩溃. 今天我大师兄查哥搞定了pdf文件的读取,知道此事后异常欣喜.在此基础上,我查找了docx ...

  • 再见PDF提取收费!我用100行Python代码搞定!

    第471篇原创干货,第一时间送达 大家在日常的工作和学习过程中,都少不了与PDF文件打交道,很多的小伙伴都面临着将PDF文件中的文字.图片和表格数据提取出来的问题.能够对PDF文件中的文字.表格等数据 ...

  • 如何使用python抽取pdf表格及文本,并保存到excel

    pdf是一种便携式文档格式,由Adobe公司设计.因为不受平台限制,且方便保存和传输,所以pdf非常受欢迎. 目前市场上有很多pdf工具,大部分是阅读类,也有支持对pdf的修改.转换等功能,但这部分工 ...

  • 两行代码读取pdf、docx文件

    最近运行课件代码,发现pdf文件读取部分的函数失效.这里找到读取pdf文件的可运行代码,为了方便后续学习使用,我已将pdf和docx读取方法封装成pdfdocx包. pdfdocx 只有简单的两个读取 ...

  • K-means聚类:原理简单的聚类算法

    对于监督学习而言,回归和分类是两类基本应用场景:对于非监督学习而言,则是聚类和降维.K-means属于聚类算法的一种,通过迭代将样本分为K个互不重叠的子集. 对于K-means聚类而言,首先要确定的第 ...

  • 【Python 库】解析PDF文本及表格

    pdf 是个异常坑爹的东西,有很多处理 pdf 的库,但是没有完美的. 一.pdfminer3k pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本. ...

  • 如何使用Python提取pdf表格及文本,并保存到excel

    来自公众号:Python大数据分析 pdf是一种便携式文档格式,由Adobe公司设计.因为不受平台限制,且方便保存和传输,所以pdf非常受欢迎. 目前市场上有很多pdf工具,大部分是阅读类,也有支持对 ...

  • 如何用Python读取Excel中图片?又如何用Python往Excel中写入图片?

    大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析. 那么你知道如何使用Python读 ...

  • (38条消息) python读取、写入txt文本内容

    读取txt文本 python常用的读取文件函数有三种read().readline().readlines() 以读取上述txt为例,看一下三者的区别 read()    一次性读全部内容 一次性读取 ...

  • Java 读取Word文本框中的文本/图片/表格

    Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...

  • 使用Python读取图片中的文本数据

    CoolAuthor:Dario RadečićTitle: Read Text from Image with One Line of Python CodeSite https://towards ...

  • 将有大量表格图片的Word/PDF识别成文本Word(Python调用阿里云读光接口)

    将有大量表格图片的word转换成文本格式(依然是word格式),暂且记录下,一时间写的比较乱,有空了再好好梳理和调整. 主要是通过"阿里云读光PDF识别"(官方网址)的API实现的 ...

  • 一行Python代码中自动化文本处理

    磐创AI推荐搜索 AI学习路线 TensorFlow2.0 资源   磐创AI分享   作者 | Satyam Kumar 编译 | VK 来源 | Towards Data Science 自然语言 ...

  • python 读取多个excel数据写入同一个excel中

    一.将excel数据源存储到同一个excel的不同sheet 中 例如A.xlsx 中有test1,test2 两张sheet.B.xlsx中有test3 一张sheet,存储到C.xlsx中后,C有 ...