python
from spire.pdf.common import *
from spire.pdf import *
import os
def extract_text_from_pdf(pdf_path, output_dir, is_simple_extraction=True):
# 创建一个 PDF 文档对象
pdf = PdfDocument()
# 加载 PDF 文件
pdf.LoadFromFile(pdf_path)
# 确保输出目录存在
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 创建一个TXT文件来保存提取的文本
extracted_text_path = os.path.join(output_dir, "extract_text.txt")
extractedText = open(extracted_text_path, "w", encoding="utf-8")
# 创建PdfTextExtractOptions 对象
extractOptions = PdfTextExtractOptions()
extractOptions.IsSimpleExtraction = is_simple_extraction
# 遍历文档的每一页
for i in range(pdf.Pages.Count):
# 获取页面
page = pdf.Pages.get_Item(i)
# 创建PdfTextExtractor 对象
textExtractor = PdfTextExtractor(page)
# 从页面提取文本
text = textExtractor.ExtractText(extractOptions)
# 将文本写入TXT文件
extractedText.write(text)
# 释放资源
extractedText.close()
pdf.Close()
# 调用函数,确保路径正确
extract_text_from_pdf('input\\BLIP-2.pdf', "./text", is_simple_extraction=True)
最开始我用的spire pdf 直接提取 发现输出的文本格局会和原来pdf格局一样导致出现文本顺序混乱
python
from spire.pdf.common import *
from spire.pdf import *
import os
def extract_text_from_pdf(pdf_path, output_dir, is_simple_extraction=True):
# 创建一个 PDF 文档对象
pdf = PdfDocument()
# 加载 PDF 文件
pdf.LoadFromFile(pdf_path)
# 确保输出目录存在
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 创建一个TXT文件来保存提取的文本
extracted_text_path = os.path.join(output_dir, "extract_text.txt")
extractedText = open(extracted_text_path, "w", encoding="utf-8")
# 创建PdfTextExtractOptions 对象
extractOptions = PdfTextExtractOptions()
extractOptions.IsSimpleExtraction = is_simple_extraction
# 遍历文档的每一页
for i in range(pdf.Pages.Count):
# 获取页面
page = pdf.Pages.get_Item(i)
# 创建PdfTextExtractor 对象
textExtractor = PdfTextExtractor(page)
# 从页面提取文本
text = textExtractor.ExtractText(extractOptions)
# 将文本写入TXT文件
extractedText.write(text)
# 释放资源
extractedText.close()
pdf.Close()
# 调用函数,确保路径正确
extract_text_from_pdf('input\\BLIP-2.pdf', "./text", is_simple_extraction=True)
只要设置PdfTextExtractOptions.IsSimpleExtraction = True 就可以实现按照pdf文字输入顺序提取文字 想法来源:Python 从 PDF 文档中提取文本