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等)有同样问题但未改,按需修复
相关推荐
白鲸开源11 小时前
干货!SeaTunnel(2.3.12)高阶用法(一):核心概念之数据流
java·大数据·github
夜白宋11 小时前
【项目深入】二、秒杀系统
java
花开·莫之弃11 小时前
Mac安装多版本jdk(jenv)
java·开发语言·macos
计算机安禾11 小时前
【c++面向对象编程】第32篇:移动语义与右值引用:现代C++性能优化核心
java·c++·性能优化
qq_4017004111 小时前
Qt 自定义无边框窗口:标题栏、拖拽移动与缩放
开发语言·qt
fish_xk11 小时前
c++11的初见
开发语言·c++·算法
Amctwd12 小时前
【JavaScript】JS 异步 Promise 解析
开发语言·前端·javascript
JAVA面经实录91712 小时前
JVM高频面试总结(背诵完整版)
java·开发语言·jvm
ChoSeitaku12 小时前
11.异常_throws_try...catch_BigInteger_BigDecimal_Date_Calendar_LocalDate_Integer
java
胡志辉的博客12 小时前
完全开源、本地 SQLite 管理一切:我写了一个桌面邮件客户端 OneMail
java·sqlite·开源