我想从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做到这一点?
答案 0 :(得分:0)
TextConverter
用于将pdf转换为纯文本,而不考虑元素的位置。其背后的原因是,即使使用等宽字体,也很难使用纯文本准确地呈现pdf中的文本位置。
HtmlConverter
和XMLConverter
输出一个包含文本和文本位置的文件。也许您可以使用此输出来创建所需的结果。
如果您的需求更加具体,您也可以考虑编写自己的PDFConverter
。这使您可以控制所有内容,包括页面的开始和结束,渲染图像,绘制多边形路径以及将文本写入特定位置。