Assertion Error
在提问之前...
- [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)
如何复现
- 正常执行翻译步骤,在进度达到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 或其依赖的库可能与当前环境存在兼容性问题。
尝试更新1.9.1看看能否解决,这个在1.9.0版本确实有这个问题。
我是1.9.1版本,遇到了一样的问题,但我用Adobe Acrobat 检查 PDF 嵌入字体发现字体是正常的,错误Log是完全一致的
assert 那个问题的话可能是字体的subset导致,最近的PR已经添加了跳过subset的功能,可以尝试更新或等新版本发布。
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等各个版本,发现还是同样的错误提示。 以后不能再瞎装不相关的东西了,把这个这么好用的翻译软件给搞得不能使用了。