转换.doc文档为.txt时遭遇antiword错误的技术求助
.doc文件转换TXT时antiword错误的解决方案
问题原因
textract处理.doc格式文件时,依赖第三方工具antiword。出错的Windows 11系统要么未安装antiword,要么工具路径未添加到系统环境变量,导致Python无法调用该工具。
解决办法
方法一:安装并配置antiword
- 下载适配Windows 11的antiword压缩包,解压到固定路径(如
C:\antiword) - 打开系统环境变量设置:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」的
Path中添加antiword.exe所在文件夹的路径(如C:\antiword) - 重启命令行或Python IDE,使环境变量生效
方法二:改用pywin32调用Word COM组件(无需依赖antiword)
如果系统已安装Microsoft Word,可以用pywin32直接调用Word的COM接口读取.doc文件,兼容性更稳定。先安装依赖:
pip install pywin32 python-docx
替换后的代码:
import os from docx import Document import win32com.client as win32 def doc2txt(input_report_path, final_report_path): file_extension = os.path.splitext(input_report_path)[1].lower() try: text = "" if file_extension == ".docx": doc = Document(input_report_path) paragraphs = [paragraph.text for paragraph in doc.paragraphs] text = "\n".join(paragraphs) elif file_extension == ".doc": # 调用Word COM组件读取文档 word = win32.gencache.EnsureDispatch('Word.Application') word.Visible = False # 后台运行不显示Word窗口 doc = word.Documents.Open(input_report_path) # 读取文档全部文本 text = doc.Content.Text # 关闭文档和Word进程 doc.Close(SaveChanges=False) word.Quit() else: print(f"不支持的文件格式:{file_extension}") return with open(final_report_path, "w", encoding="utf-8") as txt_file: txt_file.write(text) except Exception as e: print(f"转换 {input_report_path} 时出错:{e}")
注意:使用此方法需确保系统已安装Microsoft Word,且版本与pywin32兼容。
内容的提问来源于stack exchange,提问作者Abhi96
相关产品推荐
相关产品推荐

