这篇文章主要为大家详细介绍了Python之把PDF转为Word方法用法,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的雯雯来看看吧!
先讲一下为啥要写这个文章,网上其实很多这种PDF转化的代码和软件。我一直想用Python做,但是网上搜到的代码很多都不能用,很多是2.7版本的代码,再就是PDF需要用到的库在导入的时候,很多的报错,解决起来特别费劲,而且自从2021年初以来,似乎网上很少有关PDF转化的代码出现了。我在研究了很多代码和pdfminer的用法后,总结了几个方法,目前这几种方法可以解决大多数格式的转化,后面我也专门放了提取PDF表格的代码,文末有高效的免费在线工具推荐。
下面这个是我最最推荐的方法 ,简单高效 ,只要是标准PDF文档,里面的图片和表格都可以保留格式
代码如下:
# pip install pdf2docx #安装依赖库
from pdf2docx import Converter
pdf_file = r'C:\Users\Administrator\Desktop\新建文件夹\mednine.pdf'
docx_file = r'C:\Users\Administrator\Desktop\Python教程\02.docx'
# convert pdf to docx
cv = Converter(pdf_file)
cv.convert(docx_file, start=0, end=None)
cv.close()
分析用Python把PDF转为Word方法总结
代码如下:
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO
import sys
import string
from docx import Document
def convert_pdf_2_text(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
device = TextConverter(rsrcmgr, retstr, codec='utf-8', laparams=LAParams())
interpreter = PDFPageInterpreter(rsrcmgr, device)
with open(path, 'rb') as fp:
for page in PDFPage.get_pages(fp, set()):
interpreter.process_page(page)
#print(retstr.getvalue())
text = retstr.getvalue()
device.close()
retstr.close()
return text
def pdf2txt():
text=convert_pdf_2_text(path)
with open('real.txt','a',encoding='utf-8') as f:
for line in text.split('\n'):
f.write(line+'\n')
def remove_control_characters(content):
mpa = dict.fromkeys(range(32))
return content.translate(mpa)
def save_text_to_word(content, file_path):
doc = Document()
for line in content.split(''):
print(line)
paragraph = doc.add_paragraph()
paragraph.add_run(remove_control_characters(line))
doc.save(file_path)
if __name__ == '__main__':
path = r'C:\Users\mayn\Desktop\程序临时\培训教材.pdf' # 你自己的pdf文件路径及文件名 不适合扫描版 只适合标准PDF文件
text = convert_pdf_2_text(path)
save_text_to_word(text, 'output.doc') #PDF转为word方法
#pdf2txt() #PDF转为txt方法
分析用Python把PDF转为Word方法总结
代码如下:
import pdfplumber
import pandas as pd
import time
from time import ctime
import psutil as ps
#import threading
import gc
pdf = pdfplumber.open(r"C:\Users\Administrator\Desktop\新建文件夹\mednine.pdf")
N=len(pdf.pages)
print('总共有',N,'页')
def pdf2exl(i): # 读取了第i页,第i页是有表格的,
print('********************************************************************************************************************************************************')
print('正在输出第',str(i+1),'页表格')
print('********************************************************************************************************************************************************')
p0 = pdf.pages[i]
try:
table = p0.extract_table()
print(table)
df = pd.DataFrame(table[1:], columns=table[0])
#print(df)
df.to_excel(r"C:\Users\Administrator\Desktop\新建文件夹\Model"+str(i+1)+".xlsx")
#df.info(memory_usage='deep')
except Exception as e:
print('第'+str(i+1)+'页无表格,或者检查是否存在表格')
pass
#print('目前内存占用率是百分之',str(ps.virtual_memory().percent),' 第',str(i+1),'页输出完毕')
print('**********************************************************************************************************************************************************')
print('\n\n\n')
time.sleep(5)
def dojob1(): #此函数 直接循环提取PDF里面各个页面的表格
print('*********************')
for i in range(0,N):
pdf2exl(i)
分析用Python把PDF转为Word方法总结
代码如下:
import camelot
import wand
# 从PDF文件中提取表格
def output(i):
#print(tables)
#for i in range(5):
tables = camelot.read_pdf(r'C:\Users\Administrator\Desktop\新建文件夹\mednine.pdf', pages=str(i), flavor='stream')
print(tables[i])
# 表格数据
print(tables[i].data)
tables[i].to_csv(r'C:\Users\Administrator\Desktop\新建文件夹\002'+str(i)+r'.csv')
def plotpdf():
# 这个是画pdf 结构的函数 现在不能用 不要打开
#print(tables[0])
tables = camelot.read_pdf(r'C:\Users\mayn\Desktop\vcode工作区\11\路基.pdf', pages='200', flavor='stream')
camelot.plot(tables[0], kind='text')
print(tables[0])
plt.show()
# 绘制PDF文档的坐标,定位表格所在的位置
#plt = camelot.plot(tables[0],kind='text')
#plt.show()
#table_df = tables[0].df
#plotpdf()
#i=3
#output(i)
for i in range(0,2):
try:
output(i)
except Exception as e:
print('第'+str(i)+'页没找到表格啊啊啊')
pass
continue
到此这篇关于详解用Python把PDF转为Word方法总结的文章就介绍到这了,更多相关Python把PDF转为Word内容请搜索四海网以前的文章或继续浏览下面的相关文章希望大家以后多多支持四海网!
本文来自:http://www.q1010.com/181/19108-0.html
注:关于Python之把PDF转为Word方法用法的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:python
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。