用途:批量提取pdf中的文本信息
主要使用库:pdfplumber、os、docx
第一步:定义函数:输入PDF文件的文件路径,即可获取文本
# 导入PDF所在的文件路径,返回文本信息
import pdfplumber
def pdf2txt(pdf_path):
txt = ''
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
txt = txt + page.extract_text()
return txt
第二步:定义函数:获取文件夹中的文件路径,并保存在列表,需输入的是PDF所在文件夹
#获取文件夹中的文件位置
import os
def get_file_paths(folder):
file_paths = []
for root, dirs, files in os.walk(folder):
for file in files:
file_path = os.path.join(root, file)
file_paths.append(file_path)
return file_paths
第三步:填写保存PDF文件的文件夹路径,获取PDF文件路径
# 填写要提取文件路径的文件夹路径
folder_path = r"文件路径"
file_paths = get_file_paths(folder_path)
print(file_paths)
第四步:
# 导入docx库(主要)
from docx import Document
# 其他用于设置字体等信息所需要的库
from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
#通过循环将文件一个个写入word中,并保存在统一文件夹
for pdffile in file_paths:
pdf_text = pdf2txt(pdffile)
text_name = pdffile.split('\\')[-1].split('.')[0] #切割文件路径,获取文件名
print(pdf_text)
document = Document()
paragraph = document.add_paragraph()
run = paragraph.add_run()
run.font.name = 'msyh' # 使用特定的字体
run._element.rPr.rFonts.set(qn('w:eastAsia'), 'msyh') # 针对东亚字符设置字体
document.add_paragraph(pdf_text)
document.save(r"文件夹位置\\{}.docx".format(text_name))
中途遇到的难题:文字在写入word中时,有些内容字体显示方块(方格)
个人解决方式:变更字体,因此导入了Pt、qn等模块
变更字体的结果:用以上代码只将显示方块的文字修改,但总体可以保留全部文字
后续难题:改变整体的文本字体格式,暂不开展编写