NuoYi 挪移更新-离线的 PDF/DOCX 转 Markdown 工具稍微省一点显存了
NuoYi这东西做了点更新,从0.1到了0.4.6,花了一点时间折腾。
先说说这玩意儿是干啥的。就是个PDF和Word文档转Markdown的工具,但跟之前不一样了,现在是七个引擎都能用。marker还是主力,质量最好,OCR也强;mineru对中文处理挺好;docling是个平衡方案;pymupdf最快但没OCR;pdfplumber轻量适合表格;llamaparse和mathpix是云端的,得有API密钥。本地那五个都能离线用,下载完模型就不需要网了。
GPU加速这块也折腾了不少,添加了低显存模式。8GB以下显存的显卡,会自动把batch size降下来,用FP16量化,实在不行就把模型挪到内存里去,显存不够了就使劲回收垃圾。
安装
安装其实挺简单:
pip install nuoyi
NVIDIA显卡直接用就行,苹果M系列芯片也行。GUI要是想要:
pip install nuoyi[gui]
AMD显卡这块,文档里写了Windows用DirectML,Linux用ROCm,但实话实说安装和测试还没完成。代码有框架但缺实现模块,装了torch-directml也不一定能跑起来。这部分还是半成品,别指望能正常用。
升级过程也没啥复杂的。之前装过的话:
pip install --upgrade nuoyi
就完事了。

使用方法还是参考之前的文章 NuoYi 挪移-一个离线的 PDF/DOCX 转 Markdown 工具 即可,GUI界面也没做任何更新。
模型还是原来那些,在~/.cache/huggingface/hub/里存着,不用重新下载。但要是从0.1或者0.2版本升级,可能会发现有些依赖不一样了,因为后来把那些try/except的导入都去掉了,缺啥依赖直接报ImportError,不像之前那样不好发现。
改进
引擎多了。原来只有marker这一个,现在七个都能选,用–engine参数指定,不指定就自动选。每个引擎特点不一样,marker最慢但质量最好,pymupdf最快但OCR不行,mineru对中文友好。这个设计是把不同场景的需求都覆盖了,有的要快,有的要准,有的只要表格。
AMD这块我得实话实说,DirectML的安装和测试还没完成。代码里写了DirectML和ROCm的支持框架,但实际测试没做全,缺了一些实现模块。目前这部分还是半成品,可能装了也跑不起来。ROCm和Vulkan的实现更糙,连框架都没搭好。
内存管理改了不少。加了自动显存检测,超过6GB空闲就用GPU,不够就CPU。低显存模式会自动调整batch size和量化级别。还有个disable-ocr-models参数,纯数字PDF不需要OCR的话,能省1.5GB显存。清理机制也加强了,CUDA内存溢出会自动重试,清理得更彻底。
CLI参数也多了。–list-engines能看所有引擎,–list-devices能看所有设备,–amd-info能看AMD显卡详细信息,–low-vram是低显存模式,–disable-ocr-models省显存。这些主要是方便调试和配置,不用每次都猜能用啥引擎啥设备。
问题
可能还存在的问题也有几个。
CHANGELOG没更新。现在版本是0.4.6,但CHANGELOG里只有0.1.0和0.2.0,中间那几个版本都没记录,别人看不着改动历史。
低显存模式虽然加了,但极限情况可能还是有问题。6GB显存那种,就算开了low-vram可能也跑不动marker,只能换pymupdf或者pdfplumber这种不要GPU的引擎。或者干脆用CPU,但速度就慢了。
部分PDF转换质量可能有问题。marker本身对表格处理挺好,但有些复杂排版可能还是不行。mineru对中文好,但英文可能不如marker。每个引擎有每个引擎的毛病,这个得根据具体文档选。
GUI界面我写得挺糙,功能都有了但界面和交互可能不够友好。主要是时间有限,先把核心功能做了,后面慢慢优化。
夜雨聆风