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

标签 python pdfbox pdftotext

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

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

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

我明白了:

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

  1. 故事的人物

  2. 注意力和努力

  3. 惰性 Controller

  4. 联想机器

  5. 认知轻松
  6. 规范、意外和原因
  7. 一台可以得出结论的机器
  8. 判断是如何发生的
  9. 回答一个更简单的问题 第二部分。启发式和偏见
  10. 小数定律 <5>
  11. anchor
  12. 可用性科学
  13. 可用性、情绪和风险
  14. Tom 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()

最佳答案

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

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

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

为了仅获取裁剪部分的文本,您需要通过 OCR 引擎(例如 Tesseract)对其进行处理。与 Tesseract 交互的 python 包示例:pytesseracttesserocr .

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

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

关于python - 即使 pdf 文件被裁剪后,整个页面的内容仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44186912/

相关文章:

python - 如何合并列表中的损坏文本并附加到字典中?

python - Apache NiFi : Processing multiple csv's using the ExecuteScript Processor

python - 在Python中读取具有最新时间戳的文本文件

python - 一定时间后自动关闭窗口

java - 将 PDF 文件转换为图像

python - 如何处理 <FE><FF> 应该是有效的 utf-8?我究竟做错了什么?

java - IText 像 pdftotext -layout 一样读取 PDF?

python - re.M 不适用于我的代码

java - 尝试将 ResultSet 打印为 PDF 文件

pdf - 按列提取 PDF 文本