整个页面的内容仍然存在,即使在pdf文件被裁剪之后

2024-06-09 09:44:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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. 汤姆W的专长

输出应该只是

  1. 故事的人物

我运行的代码

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()

Tags: 文件文本机器outputpdfpageopen故事
1条回答
网友
1楼 · 发布于 2024-06-09 09:44:33

听起来像是从文本层提取文本。PDF可以有一个以上的层-如果它纯粹是一个图像PDF,那么它将只有图像层,但许多有一个图像层和一个文本层。文本层可以在图像前面,也可以在图像后面或者不可见。在

除非PDF是以特殊方式准备的,否则文本层不会与图像中看到的文本对齐。如果您有一个多页的PDF,那么文本可能会被拆分到相关的页面中,否则就不会在页面上进行排列。在

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

为了只获得裁剪部分的文本,您需要通过OCR引擎(例如Tesseract)对其进行处理。与Tesseract接口的python包示例:pytesseracttesserocr。在

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

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

相关问题 更多 >