PDFMathTranslate icon indicating copy to clipboard operation
PDFMathTranslate copied to clipboard

Assertion Error

Open onedayseek opened this issue 10 months ago • 4 comments

在提问之前...

  • [x] 我已经搜索了现有的 issues
  • [x] 我在提问题之前至少花费了 5 分钟来思考和准备
  • [x] 我已经认真且完整的阅读了 wiki
  • [x] 我已经认真检查了问题和网络环境无关(包括但不限于Google不可用,模型下载失败)

使用的环境

- OS: windows 11
- Python:3.12.9
- pdf2zh:1.9.0

描述你的问题

在使用Google、Bing、Tencent翻译时在进度到达100%后报错Assertion Error。其他翻译引擎没有使用过。翻译后预览的文档具体表现为大段空白、零散的原文(或译文)及标点

在将报错信息粘贴并询问kimi后尝试对fonttools和pymupdf进行重新安装,但仍未能解决 pip uninstall fonttools pymupdf pip install fonttools pymupdf KIMI的详细回答见下方

原始的PDF文件已随附件上传(DOI:10.48550/arXiv.1705.09406)

如何复现

  1. 正常执行翻译步骤,在进度达到100%后出现报错信息,随后在预览翻译后的文档时发现格式错误

预期行为

No response

相关 Logs

AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pymupdf\__init__.py:276:exception_info(): exception_info:
AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pymupdf\__init__.py:277:exception_info(): Traceback (most recent call last):
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pymupdf\utils.py", line 5832, in build_subset
    fts.main(args)
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\misc\loggingTools.py", line 375, in wrapper
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\subset\__init__.py", line 3786, in main
    font = load_font(
           ^^^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\misc\loggingTools.py", line 375, in wrapper
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\subset\__init__.py", line 3628, in load_font
    f = font["post"]
        ~~~~^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\ttLib\ttFont.py", line 465, in __getitem__
    table = self._readTable(tag)
            ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\ttLib\ttFont.py", line 472, in _readTable
    data = self.reader[tag]
           ~~~~~~~~~~~^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\ttLib\sfnt.py", line 110, in __getitem__
    data = entry.loadData(self.file)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\ttLib\sfnt.py", line 508, in loadData
    assert len(data) == self.length
           ^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError

AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pymupdf\__init__.py:276:exception_info(): exception_info:
AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pymupdf\__init__.py:277:exception_info(): Traceback (most recent call last):
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\pymupdf\utils.py", line 5832, in build_subset
    fts.main(args)
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\misc\loggingTools.py", line 375, in wrapper
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\subset\__init__.py", line 3786, in main
    font = load_font(
           ^^^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\misc\loggingTools.py", line 375, in wrapper
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\subset\__init__.py", line 3628, in load_font
    f = font["post"]
        ~~~~^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\ttLib\ttFont.py", line 465, in __getitem__
    table = self._readTable(tag)
            ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\ttLib\ttFont.py", line 472, in _readTable
    data = self.reader[tag]
           ~~~~~~~~~~~^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\ttLib\sfnt.py", line 110, in __getitem__
    data = entry.loadData(self.file)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\22238\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\fontTools\ttLib\sfnt.py", line 508, in loadData
    assert len(data) == self.length
           ^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError

原始PDF文件

Baltrušaitis 等 - 2017 - Multimodal Machine Learning A Survey and Taxonomy.pdf

还有别的吗?

将报错信息粘贴至kimi得到如下分析:

报错信息分析 文件类型:Python 文件和相关路径(如 fontTools 和 pymupdf)。 关键错误信息:AssertionError,出现在以下路径: 复制 File "C:/Users/22238/AppData/Local/Packages/PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0/LocalCache/local-packages/Python312/site-packages/fontTools/ttLib/sfnt.py", line 508, in loadData assert len(data) == self.length 错误原因: 在加载字体时,程序尝试读取字体文件的某些数据块。 fontTools 库期望数据块的长度与预期值完全匹配。 但实际数据长度与预期值不符,触发了 AssertionError。 可能的原因 字体文件损坏:字体文件可能被损坏或格式不正确。 字体文件不完整:字体文件可能缺少某些必要的部分。 字体文件格式不支持:fontTools 可能无法处理某种特定格式的字体文件。 fontTools 库版本问题:使用的 fontTools 版本可能存在兼容性问题。 pymupdf 库问题:pymupdf 或其依赖的库可能与当前环境存在兼容性问题。

onedayseek avatar Feb 22 '25 09:02 onedayseek

尝试更新1.9.1看看能否解决,这个在1.9.0版本确实有这个问题。

hellofinch avatar Feb 24 '25 01:02 hellofinch

我是1.9.1版本,遇到了一样的问题,但我用Adobe Acrobat 检查 PDF 嵌入字体发现字体是正常的,错误Log是完全一致的

Eethonn avatar Feb 25 '25 12:02 Eethonn

assert 那个问题的话可能是字体的subset导致,最近的PR已经添加了跳过subset的功能,可以尝试更新或等新版本发布。

hellofinch avatar Feb 26 '25 01:02 hellofinch

Droit fiscal des affaires 2018-2019 - 17e ed. (Précis) (French Edition) P30-dual.pdf

我也遇到同样的错误提示。我回忆了下,应该和PDFMathTranslate的版本、PDF文件的字体应该没有关系,可能是在安装了某个软件或者升级了某个软件的版本后产生的,因为我又尝试了1.9.2,1.9.1,1.9.0等各个版本,发现还是同样的错误提示。 以后不能再瞎装不相关的东西了,把这个这么好用的翻译软件给搞得不能使用了。

histalent avatar Feb 26 '25 18:02 histalent