ERROR:pdf2zh.converter:‘str‘ object has no attribute ‘choices‘ converter.py:357

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.pyOpenAITranslator.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等)有同样问题但未改,按需修复
相关推荐
kruptos3 小时前
分布式系统怎么“选主“?Raft 共识一次讲清
开发语言·分布式·php·共识算法
xcl09253 小时前
幼儿托育系统开发实战:从需求分析到上线全流程指南
java·大数据·需求分析
吴声子夜歌3 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
小小猪的春天3 小时前
Java 手写第一个 MCP Server:Spring AI MCP 半小时跑通
java·人工智能·spring boot·ai编程
find1star3 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
今天AI了吗4 小时前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
benchmark_cc4 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库4 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H4 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
许彰午4 小时前
27-AuthService登录链路
java·低代码·架构