如何用Python docx模块识别并处理DOCX文件中的文本、表格与图片?
解决DOCX文档文本、图片、表格的遍历与识别问题
以下是基于python-docx模块的完整解决方案,能同时处理文本段落、图片和表格:
完整代码实现
from docx import Document doc = Document('SomeDoc.docx') # 遍历处理段落(包含文本和嵌入图片) for para in doc.paragraphs: # 检查段落是否包含内嵌图片 if para.inline_shapes: print('IMAGE') # 打印段落文本(跳过空文本段落) text_content = para.text.strip() if text_content: print(text_content) # 遍历处理表格 for table in doc.tables: print('表格内容:') for row in table.rows: # 拼接每行单元格内容,用制表符分隔 row_content = '\t'.join(cell.text.strip() for cell in row.cells) print(row_content) # 可选:处理浮动图片(不嵌入段落的图片) for shape in doc.shapes: # shape_type=13代表图片类型 if shape.shape_type == 13: print('IMAGE(浮动)')
关键说明
图片识别:
- 内嵌图片(和文本在同一段落)通过段落的
inline_shapes属性判断,只要该列表不为空,即说明段落包含图片。 - 浮动图片(独立于段落的图片)通过文档的
shapes集合遍历,判断shape_type是否为13(DOCX中图片的类型标识)。
- 内嵌图片(和文本在同一段落)通过段落的
表格内容提取:
- 通过
doc.tables获取文档中所有表格,遍历每行的单元格,拼接单元格文本实现表格内容的打印。
- 通过
原代码不足:
- 仅遍历了
doc.paragraphs,遗漏了表格和段落内的图片元素,因此无法识别图片和提取表格内容。
- 仅遍历了
内容的提问来源于stack exchange,提问作者Karel CZ
相关产品推荐
相关产品推荐

