我想从 pdf 论文中提取文本。但是,当我使用下面的代码提取时,返回的文本类似于:
section text text text text text text text text
text text text text text text text text
但我希望该部分具有正常的缩进:
Section
text text text text text text text text
text text text text text text text text
遵循示例:
import io
from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfpage import PDFPage
def extract_text_by_page(pdf_path):
with open(pdf_path, 'rb') as fh:
for page in PDFPage.get_pages(fh,
caching=True,
check_extractable=True):
resource_manager = PDFResourceManager()
fake_file_handle = io.StringIO()
converter = TextConverter(resource_manager, fake_file_handle)
page_interpreter = PDFPageInterpreter(resource_manager, converter)
page_interpreter.process_page(page)
text = fake_file_handle.getvalue()
yield text
# close open handles
converter.close()
fake_file_handle.close()
def extract_text(pdf_path):
for page in extract_text_by_page(pdf_path):
print(page)
print()
if __name__ == '__main__':
print(extract_text('w9.pdf'))
可以用 pdfminer 做到这一点吗?
最佳答案
TextConverter
旨在将 pdf 转换为纯文本,而不考虑元素的位置。其背后的原因是,即使使用等宽字体,也很难使用纯文本准确呈现 pdf 中的文本位置。
HtmlConverter
和 XMLConverter
输出一个包含文本和文本位置的文件。也许您可以使用此输出来创建您想要的结果。
如果您的需求更具体,您也可以考虑编写自己的PDFConverter
。这使您可以控制一切,包括页面的开头和结尾、渲染图像、绘制多边形路径以及将文本写入特定位置。
关于python - 如何从pdf中提取带有缩进的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57990541/