Python提取word文字&图片
俗话说好记性不如乱笔头,年龄上来了,记性下去了,最近在项目复盘的时候,很多是word文件,想转移到Trilium上面,直接用复制黏贴Trilium会出现空白现象,也懒得再去升级或研究Trilium。
于是就想能不能用Python先去提取文字、图片,然后在Trilium中排版整理,这样也可以回忆&巩固一下项目。
废话文学到此结束,直接来吧~
pip install docx
从Word文档中提取所有文本
# 从Word文档中提取所有文本
def extract_text_from_doc(docx_path):
output_dir = os.path.splitext(docx_path)[0]
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 加载文档
doc = Document(docx_path)
# 提取每个段落的文本,并使用换行符连接
full_text = '\n'.join([para.text for para in doc.paragraphs])
# 将提取的文本保存到指定的文件
with open(f'{output_dir}/{timetools.get_current_timestamp()}.text', 'w', encoding='utf-8') as file:
file.write(full_text)
从Word文档中提取所有图片
# 从Word文档中提取所有图片
def extract_images_from_docx(docx_path):
output_dir = os.path.splitext(docx_path)[0]
if not os.path.exists(output_dir):
os.makedirs(output_dir)
doc = Document(docx_path)
images=[]
# 遍历文档的 part 对象中的所有关系(rels)。这些关系代表了文档中嵌入的元素
for rel in doc.part.rels.values():
# 检查关系的 reltype 是否包含字符串 "image",这表示这是一个图片关系。
if "image" in rel.reltype:
# 如果这是一个图片关系,将图片数据(blob)添加到 images 列表中。
images.append(rel.target_part.blob)
for index, image in enumerate(images):
with open(f"{output_dir}/image_{index}.png", "wb") as f:
f.write(image)
补充说明
1、在上述代码,有可能会出现如下:
ValueError: file 'xxx.docx' is not a Word file, content type is 'application/vnd.ms-word.document.macroEnabled.main+xml'
原因有很多,基本上大概意思就是这不是标准 Word 文档类型~
为图方便,最简单的方式就是打开这个报错的文件,另存为Microsoft word文档即可。
2、get_current_timestamp函数就是个获取当前时间的时间戳用于区别txt文件。
THE END
0
二维码
打赏
海报
Python提取word文字&图片
俗话说好记性不如乱笔头,年龄上来了,记性下去了,最近在项目复盘的时候,很多是word文件,想转移到Trilium上面,直接用复制黏贴Trilium会出现空白现象,也懒……
共有 0 条评论