我在pypdf2的帮助下裁剪了一个pdf文件但是当我尝试从裁剪的pdf文件中提取文本时,我得到了整个pdf页面的文本。我该如何解决?
但是当我运行命令pdftotext out8.pdf out.txt
我明白了:
内容 介绍 第一部分。两个系统
故事的人物
注意力和努力
懒人控制器
联合机器
输出应该只是
我跑的代码
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()
答案 0 :(得分:2)
听起来它是从文本图层中提取文本。 PDF可以有多个图层 - 如果它纯粹是图像PDF,那么它将只有图像层,但许多图像层具有文本图层。文本图层可位于图像前方,图像后方或不可见。
除非以特殊方式准备PDF,否则文本图层不会与图像中显示的文本对齐。如果您有多页PDF,则文本可能会被拆分为相关页面,但不会在页面中排列。
裁剪图像时,这不会影响文本图层。当您提取文本时,它会从完整的文本层中抓取它。
为了获得裁剪部分的文本,您需要通过OCR引擎(例如Tesseract)处理它。与Tesseract交互的python包示例:pytesseract和tesserocr。
有关如何设置和运行处理的一些指南: