【AI工具】PDFMathTranslate安装使用

用了一天时间,安装并使用了PDFMathTranslate这款PDF文档翻译工具。
PDFMathTranslate是能够完整保留排版的 PDF 文档全文双语翻译项目,之前使用文档翻译的时候,对于论文这种类型的文章,由于图表和公式太多,文档翻译经常出现格式错乱。试用下来,效果不错,而且免费。

资源地址:https://github.com/Byaidu/PDFMathTranslate

PDFMathTranslate是一款科学 PDF 文档翻译及双语对照工具,可以将PDF文档进行翻译,并且很好的保留格式。网站宣传如下:
在这里插入图片描述

安装过程并不轻松。先是安装了两次都失败了,安装成功后,因为这个项目借用的翻译服务谷歌、DeepL、Ollama等,都连接不上,又折腾一番。简单说就是,出现错误问AI,还真管用,一步一步走向成功安装并使用。
安装过程中,直接使用网站介绍的pip install pdf2zh,安装不成功,有依赖冲突。
连接翻译服务的选项,选择腾讯云服务。

一、安装过程

在 Miniconda 环境下安装 PDFMathTranslate 的步骤如下:

1. 创建 Conda 环境

首先,建议创建一个新的 Conda 环境以避免依赖冲突。可以使用以下命令创建一个名为 pdfmathtranslate 的环境,并指定 Python 版本(建议使用 Python 3.8 至 3.11):

conda create -n pdfmathtranslate python=3.9

2. 激活 Conda 环境

创建环境后,需要激活该环境:

conda activate pdfmathtranslate

3. 安装 PDFMathTranslate

在激活的环境中,使用 pip 安装 PDFMathTranslate:

pip install pdf2zh

4. 使用 PDFMathTranslate

安装完成后,可以通过命令行工具或图形界面使用 PDFMathTranslate。建议使用图形界面。

  • 命令行工具:使用以下命令进行翻译:

    pdf2zh your_document.pdf
    

    可以指定源语言和目标语言等选项:

    pdf2zh your_document.pdf -li en -lo zh
    
  • 图形界面:启动图形界面的命令如下:

    pdf2zh -i
    

    如果浏览器没有自动打开,可以手动访问 http://localhost:7860/

通过以上步骤,在 Miniconda 环境中成功安装了 PDFMathTranslate.

运行错误修复

但是输入pdf2zh -i,出现报错:

Traceback (most recent call last):
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\urllib3\connection.py", line 198, in _new_conn    sock = connection.create_connection(
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\urllib3\util\connection.py", line 85, in create_connection
  raise err
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\urllib3\util\connection.py", line 73, in create_connection
  sock.connect(sa)
socket.timeout: timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
  response = self._make_request(
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
  raise new_e
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
  self._validate_conn(conn)
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
  conn.connect()
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\urllib3\connection.py", line 704, in connect
  self.sock = sock = self._new_conn()
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\urllib3\connection.py", line 207, in _new_conn    raise ConnectTimeoutError(
urllib3.exceptions.ConnectTimeoutError: (<urllib3.connection.HTTPSConnection object at 0x0000029FA1EAF400>, 'Connection to huggingface.co timed out. (connect timeout=1)')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\requests\adapters.py", line 667, in send
  resp = conn.urlopen(
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
  retries = retries.increment(
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\urllib3\util\retry.py", line 519, in increment    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /wybxc/DocLayout-YOLO-DocStructBench-onnx/resolve/main/doclayout_yolo_docstructbench_imgsz1024.onnx (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x0000029FA1EAF400>, 'Connection to huggingface.co timed out. (connect timeout=1)'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\huggingface_hub\file_download.py", line 1374, in _get_metadata_or_catch_error
  metadata = get_hf_file_metadata(
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\huggingface_hub\utils\_validators.py", line 114, in _inner_fn
  return fn(*args, **kwargs)
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\huggingface_hub\file_download.py", line 1294, in get_hf_file_metadata
  r = _request_wrapper(
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\huggingface_hub\file_download.py", line 278, in _request_wrapper
  response = _request_wrapper(
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\huggingface_hub\file_download.py", line 301, in _request_wrapper
  response = get_session().request(method=method, url=url, **params)
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\requests\sessions.py", line 589, in request
  resp = self.send(prep, **send_kwargs)
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\requests\sessions.py", line 703, in send
  r = adapter.send(request, **kwargs)
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\huggingface_hub\utils\_http.py", line 93, in send
  return super().send(request, *args, **kwargs)
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\requests\adapters.py", line 688, in send
  raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout: (MaxRetryError("HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /wybxc/DocLayout-YOLO-DocStructBench-onnx/resolve/main/doclayout_yolo_docstructbench_imgsz1024.onnx (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x0000029FA1EAF400>, 'Connection to huggingface.co timed out. (connect timeout=1)'))"), '(Request ID: e70cfc15-4eff-4fef-bd59-b2a810063e73)')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\runpy.py", line 197, in _run_module_as_main
  return _run_code(code, main_globals, None,
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\runpy.py", line 87, in _run_code
  exec(code, run_globals)
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\Scripts\pdf2zh.exe\__main__.py", line 4, in <module>
  from pdf2zh.pdf2zh import main
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\pdf2zh\__init__.py", line 2, in <module>
  from pdf2zh.high_level import translate, translate_stream
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\pdf2zh\high_level.py", line 24, in <module>
  model = DocLayoutModel.load_available()
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\pdf2zh\doclayout.py", line 21, in load_available
  return DocLayoutModel.load_onnx()
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\pdf2zh\doclayout.py", line 13, in load_onnx
  model = OnnxModel.from_pretrained(
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\pdf2zh\doclayout.py", line 73, in from_pretrained
  pth = hf_hub_download(repo_id=repo_id, filename=filename, etag_timeout=1)
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\huggingface_hub\utils\_validators.py", line 114, in _inner_fn
  return fn(*args, **kwargs)
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\huggingface_hub\file_download.py", line 860, in hf_hub_download
  return _hf_hub_download_to_cache_dir(
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\huggingface_hub\file_download.py", line 967, in _hf_hub_download_to_cache_dir
  _raise_on_head_call_error(head_call_error, force_download, local_files_only)
File "C:\ProgramData\Miniconda3\envs\pdfmathtranslate\lib\site-packages\huggingface_hub\file_download.py", line 1485, in _raise_on_head_call_error
  raise LocalEntryNotFoundError(
huggingface_hub.errors.LocalEntryNotFoundError: An error happened while trying to locate the file on the Hub and we cannot find the requested files in the local cache. Please check your connection and try again or make sure your Internet connection is on.

这个问题是在尝试从 Hugging Face Hub 下载模型时出现了连接超时和文件未找到的错误。

pdf2zh的运行依赖于额外模型(wybxc/DocLayout-YOLO-DocStructBench-onnx),该模型在魔搭上也可以找到。如果在启动时下载该模型遇到问题,请使用如下环境变量:

set HF_ENDPOINT=https://hf-mirror.com

然后输入:

pdf2zh -i

然后就可以正常启动了,运行过程如下:
在这里插入图片描述
运行pdf2zh -i之后,浏览器出现:

在这里插入图片描述

二、开通翻译服务

因为这个项目借用的翻译服务谷歌、DeepL、Ollama等,都连接不上。发现项目支持腾讯云的翻译服务,就开通了腾讯云的相关服务。

1、先开通腾讯云

要获取腾讯云的 TENCENTCLOUD_SECRET_KEY,需要在腾讯云控制台中创建一个 API 密钥。以下是详细步骤:

步骤 1:登录腾讯云账号

  1. 访问腾讯云官方网站并登录账号。

步骤 2:创建 API 密钥

  1. 在腾讯云界面,搜索“访问管理”。
  2. 在“访问管理”页面中,选择“API 密钥管理”。
  3. 点击“新建密钥”按钮。
  4. 输入相关验证信息(如手机验证码),然后系统会为你生成一对 SecretIdSecretKey

步骤 3:复制密钥信息

  1. 在生成密钥后,系统会显示你的 SecretIdSecretKey。请立即复制并保存这些信息,因为 SecretKey 只会在创建时显示一次。
2、再开通腾讯云翻译服务

步骤 1:登录腾讯云控制台

  1. 访问腾讯云官方网站并登录账号。

步骤 2:开通服务
2. 在控制台中找到翻译服务。
3. 点击进入该服务的页面。
4. 按照页面提示完成服务开通流程。腾讯云的翻译有免费额度,文本翻译每月有500万字符的免费额度。

三、工具试用

终于可以使用工具,进行文档翻译了!
选择了最新比较热门的DeepSeek V3的技术报告进行翻译,文件大小1.6M,文件长度为53页。
在这里插入图片描述

效果对比

翻译完成后,选取有公式的部分作为对比。
原文:
在这里插入图片描述
翻译效果:
在这里插入图片描述
效果还是不错的。

翻译完,看了一下腾讯云的额度情况:
在这里插入图片描述

DeepSeek V3的技术报告的文件长度为53页,按照这个使用情况,一天翻译一篇重要文档,免费额度应该够用:)

猜你喜欢

转载自blog.csdn.net/bylander/article/details/144927656