即使在裁剪pdf文件后,整页内容仍然存在

时间:2017-05-25 17:55:50

标签: python pdfbox pdftotext

我在pypdf2的帮助下裁剪了一个pdf文件但是当我尝试从裁剪的pdf文件中提取文本时,我得到了整个pdf页面的文本。我该如何解决?

裁剪pdf文件后看起来像是enter image description here

但是当我运行命令pdftotext out8.pdf out.txt

我明白了:

内容 介绍 第一部分。两个系统

  1. 故事的人物

  2. 注意力和努力

  3. 懒人控制器

  4. 联合机器

  5. 认知缓解
  6. 规范,惊喜和原因
  7. 跳到结论的机器
  8. 判断如何发生
  9. 回答一个更容易的问题 第二部分。启发式和偏见
  10. 小数定律 < 5个
  11. 可用性科学
  12. 可用性,情感和风险
  13. Tom W's Specialty
  14. 输出应该只是

    1. 故事的人物
    2. 我跑的代码

      from PyPDF2 import PdfFileWriter, PdfFileReader
      input1 = PdfFileReader(open("./data/in2.pdf", "rb"))
      output = PdfFileWriter()
      
      page = input1.getPage(1)
      x = page.mediaBox.getUpperRight_x()
      y = page.mediaBox.getUpperRight_y()
      
      page.cropBox.lowerRight = (0,331-150)
      page.cropBox.upperRight = (252,331)
      output.addPage(page)
      
      outputStream = open("out8.pdf", "wb")
      output.write(outputStream)
      outputStream.close()
      

1 个答案:

答案 0 :(得分:2)

听起来它是从文本图层中提取文本。 PDF可以有多个图层 - 如果它纯粹是图像PDF,那么它将只有图像层,但许多图像层具有文本图层。文本图层可位于图像前方,图像后方或不可见。

除非以特殊方式准备PDF,否则文本图层不会与图像中显示的文本对齐。如果您有多页PDF,则文本可能会被拆分为相关页面,但不会在页面中排列。

裁剪图像时,这不会影响文本图层。当您提取文本时,它会从完整的文本层中抓取它。

为了获得裁剪部分的文本,您需要通过OCR引擎(例如Tesseract)处理它。与Tesseract交互的python包示例:pytesseracttesserocr

有关如何设置和运行处理的一些指南:

ocr-on-pdf-files-using-python
ocr-python-easy