pdf2zh 翻译报错修复记录 (2026-04-09)
错误
ERROR:pdf2zh.converter:'str' object has no attribute 'choices' converter.py:357
环境
- pdf2zh 1.9.11, openai 2.30.0, Python 3.11
- 安装路径: C:\Users\23670\AppData\Local\Programs\Python\Python311\Lib\site-packages\pdf2zh\
- 启动方式:
pdf2zh -i
原因
translator.py 中 OpenAITranslator.do_translate() 调用 client.chat.completions.create() 后直接访问 response.choices[0].message.content,但 API(或代理)返回了 str 而非 ChatCompletion 对象。
修复
文件: translator.py 第446行附近,添加 isinstance(response, str) 兜底:
python
# 修改前
response = self.client.chat.completions.create(...)
if not response.choices:
if hasattr(response, "error"):
raise ValueError("Error response from Service", response.error)
content = response.choices[0].message.content.strip()
# 修改后
response = self.client.chat.completions.create(...)
if isinstance(response, str):
content = response.strip()
else:
if not response.choices:
if hasattr(response, "error"):
raise ValueError("Error response from Service", response.error)
content = response.choices[0].message.content.strip()
注意
- 升级 pdf2zh 会覆盖此修改,需重新打补丁
- 其他翻译器类(AzureOpenAI、Silicon等)有同样问题但未改,按需修复