1.概述
2025年2月19日,历时5小时,安装PDFMathTranslate工具,通过ollama本地调用预训练大模型,成功运行,实现了英文科技论文机器翻译为中文,并保持原文件排版。
安装过程并不复杂,根据网上已有教程,一步步操作即可。
但安装完成后,输入pdf2zh -i或pdf2zh test.pdf后总是报错,命令行输出的最后一行错误信息如下。
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 下载模型时出现了连接超时和文件未找到的错误。
网友方法1:
如果在启动时下载该模型遇到问题,可使用如下环境变量:
set HF_ENDPOINT=https://hf-mirror.com
但根据说明设置后,仍报出以上错误,该方法对本人环境无效。
网友方法2:
发现问题出现在代理服务器上,如果通过 all_proxy / http_proxy 等方式指定了代理,则就会如上报错,但没有代理又无法访问huggingface_hub,因此解决的方式是本机不要设置代理,在路由器上采用自动代理,或者在本地开启代理软件设置为全局代理模式。均可规避上述错误。
本人菜鸟,不会进行相关设置,故该方法对本人也无效。
重新梳理报错情况,发现引发该网络连接错误的原因是,pdf2zh的运行依赖于额外模型(wybxc/DocLayout-YOLO-DocStructBench-onnx),该模型需要从Hugging Face Hub 在线下载。
2.解决方法
解决思路:
用最笨最粗暴的办法,先手动下载该模型文件,放到指定路径;再手动修改相应代码段,将模型文件路径直接赋值到模型调用路径,以绕过下载,解决该问题。
第一步,从魔搭社区下载该模型。
下载页面为:

点击下载即可,下载完成本地模型,找到该模型路径为(该路径请根据各自电脑实际情况替换,后边会用到):
D:/PycharmProjects/ModelTest/doclayout_yolo_docstructbench_imgsz1024.onnx
第二步,找到调用该模型的文件代码位置。
查看报错信息,调用该模型的代码文件为:
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\Users\xxx\AppData\Local\Programs\Python\Python312\Scripts\pdf2zh.exe\__main__.py", line 7, in <module>
File "C:\Users\xxx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pdf2zh\pdf2zh.py", line 234, in main
ModelInstance.value = OnnxModel.load_available()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pdf2zh\doclayout.py", line 25, in load_available
return DocLayoutModel.load_onnx()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pdf2zh\doclayout.py", line 17, in load_onnx
model = OnnxModel.from_pretrained(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pdf2zh\doclayout.py", line 87, in from_pretrained
pth = hf_hub_download(repo_id=repo_id, filename=filename, etag_timeout=1)
查看发现,调用该模型的函数位于文件doclayout.py中:
C:\Users\xxx\AppData\Local\Programs\Python\Python312\Lib\site-packages\pdf2zh\doclayout.py", line 17, in load_onnx
model = OnnxModel.from_pretrained(

打开该文件,找到函数定义def from_pretrained(repo_id: str, filename: str):
class OnnxModel(DocLayoutModel):
def __init__(self, model_path: str):
self.model_path = model_path
model = onnx.load(model_path)
metadata = {d.key: d.value for d in model.metadata_props}
self._stride = ast.literal_eval(metadata["stride"])
self._names = ast.literal_eval(metadata["names"])
self.model = onnxruntime.InferenceSession(model.SerializeToString())
@staticmethod
def from_pretrained(repo_id: str, filename: str):
if ConfigManager.get("USE_MODELSCOPE", "0") == "1":
repo_mapping = {
# Edit here to add more models
"wybxc/DocLayout-YOLO-DocStructBench-onnx": "AI-ModelScope/DocLayout-YOLO-DocStructBench-onnx"
}
from modelscope import snapshot_download
model_dir = snapshot_download(repo_mapping[repo_id])
pth = os.path.join(model_dir, filename)
else:
pth = hf_hub_download(repo_id=repo_id, filename=filename, etag_timeout=1)
return OnnxModel(pth)
发现函数from_pretrained(repo_id: str, filename: str)返回模型路径pth,修改该路径为当前环境中onnx模型文件路径即可。
第三步,修改函数中pth的路径为绝对值。
此处我将该文件放置在与doclayout.py文件相同路径下,修改后的函数from_pretrained(repo_id: str, filename: str)定义如下。
def from_pretrained(repo_id: str, filename: str):
pth = "C:/Users/xxx/AppData/Local/Programs/Python/Python312/Lib/site-packages/pdf2zh/doclayout_yolo_docstructbench_imgsz1024.onnx"
return OnnxModel(pth)
保存doclayout.py文件,重新测试运行pdf2zh -h等代码,不再报出huggingface_hub.errors.LocalEntryNotFoundError错误。
第四步,测试过程。
使用ollama拉取模型,此处采用qwen2.5:7b模型进行测试。

命令行切换到测试文件所在路径。
D:/PycharmProjects/ModelTest>
在命令行输入命令。
D:\PycharmProjects\ModelTest>pdf2zh eng2.pdf -s ollama:qwen2.5:7b
输出结果如下。

工具成功运行。
3.测试结果
翻译效果如下。



对本人而言,机器翻译科技论文能有这个效果就很不错了,内容基本ok,排版也ok,输出文件既有中英文对照版,也有仅中文版,虽然目录稍显混乱,但不影响阅读,VeryNice。
还有一个影响使用的小情况待解决,目前在个人笔记本运行该工具的速度太慢,翻译一个8页的英文PDF文章,耗时40多分钟;测试发现,果然目前ollama框架运行时未调用本机GPU,纯CPU运行速度慢,使用GPU应该可以加速运行,后边有机会使用GPU进行测试。


最后,Solute To开源PDFMathTranslate和输出工具安全教程、问题解决教程的大佬们,感谢。
3815

被折叠的 条评论
为什么被折叠?



