识别并翻译PDF
2024年7月12日大约 2 分钟
注意
0.3.1版本后更新输出为logging
,默认情况下仅会输出Warnings及以上等级的信息。如您希望查看处理过程,请设置logging
等级为INFO:
import logging
httpx_logger = logging.getLogger("httpx")
httpx_logger.setLevel(logging.WARNING)
logging.basicConfig(level=logging.INFO)
为方便演示,以下代码示例中均设置了logging
等级为INFO。
Client.pdf_translate
警告
请注意,此接口由抓包获得传递方式并实现,并非官方支持,不保证可用性
将一个或多个 PDF 文件翻译为指定语言的文本文件。
参数
参数 | 类型 | 是否必须 | 默认值 | 描述 |
---|---|---|---|---|
pdf_file | str 或 list | 是 | - | PDF 文件路径或 PDF 文件路径列表 |
output_path | str | 否 | "./Output" | 输出文件夹路径 |
convert | bool | 否 | False | 是否将 [ 转换为 $ ,[[ 转换为 $$ |
language | str | 否 | "zh" | 目标语言,支持的语言:"en" , "zh" , "ja" , "fr" , "ru" , "pt" , "es" , "de" , "ko" , "ar" |
model | str | 否 | "deepseek" | 翻译模型,支持的模型:"deepseek" , "glm4" |
返回值
返回一个包含三个元素的元组 (list1, list2, status)
,其顺序与输入文件顺序保持一致:
list1
(list
): 成功翻译的文件列表- 元素为翻译后的文本和文本位置(字符串)
- 处理失败时为空字符串
list2
(list
): 处理失败的文件列表- 元素为字典,包含两个键:
'error'
: 错误信息(字符串)'path'
: 处理失败的文件路径(字符串)
- 处理成功时,两个键的值均为空字符串
- 元素为字典,包含两个键:
status
(bool
): 处理状态True
: 至少有一个文件处理失败False
: 全部文件处理成功
注意事项
list1
和list2
的长度相同- 如果 API 密钥不具有翻译功能权限,将抛出
RuntimeError
异常
注意
此函数的list1
返回值与其他函数不同,详细请参见下方说明
返回值详细说明
返回的 list1
包含两个子列表:
text["texts"]
(list
): 翻译后的文本列表- 元素为翻译后的文本(字符串)
- 空字符串表示当前文本块没有翻译(例如:是表格文本)
text["location"]
(list
): 文本的位置信息列表- 元素为文本的位置信息(字符串)
- 与
text["texts"]
对应,表示每个翻译文本在原始 PDF 中的位置
示例
注意
请确保您已经参照初始化一节在环境变量中配置好密匙了
from pdfdeal import Doc2X
Client = Doc2X()
translate, fail, flag = Client.pdf_translate(
pdf_file="tests/pdf/sample.pdf", language="zh", model="deepseek"
)
for text in translate:
print(text["texts"])
print(text["location"])
print(fail)
print(flag)
预期输出,其中深色区域为打印的变量数值:
Processing file: 6% -- uuid: 655947fa-277c-4f05-8edc-b92f0eca3a63
TRANSLATE Progress: 1/1 files successfully processed.
['## 测试', '\n\n## 测试']
[{'raw_text': '## Test', 'page_idx': 0, 'page_width': 2040, 'page_height': 1148, 'x': 867, 'y': 418}, {'raw_text': '\n\n## 测试', 'page_idx': 1, 'page_width': 2040, 'page_height': 1148, 'x': 869, 'y': 412}]
[{'error': '', 'path': ''}]
False