我在 pypdf2 的帮助下裁剪了一个 pdf 文件,但是当我尝试从裁剪后的 pdf 文件中提取文本时,我得到了整个 pdf 页面的文本。我该如何解决这个问题?
但是当我运行命令pdftotext out8.pdf out.txt
我明白了:
内容 介绍 第一部分:两个系统
故事的人物
注意力和努力
惰性 Controller
联想机器
- 认知轻松
- 规范、意外和原因
- 一台可以得出结论的机器
- 判断是如何发生的
- 回答一个更简单的问题 第二部分。启发式和偏见
- 小数定律 <5>
- anchor
- 可用性科学
- 可用性、情绪和风险
- Tom W 的专长
输出应该只是
- 故事的人物
我运行的代码
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 包示例:pytesseract和 tesserocr .
有关如何设置和运行处理的一些指南:
关于python - 即使 pdf 文件被裁剪后,整个页面的内容仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44186912/