Local only
整条链路没有一次网络请求
解析引擎跑在你自己的机器上,装完就能断网用。合同、病历、财报、未公开的稿子—— 这些本来就不该传给别人的服务器。
上传 0 字节 引擎 本机运行 许可 Apache-2.0
NOT WIRED
结构与溯源
它认得出结构,不只是抠出文字
标题分几级、表格几行几列、这段话落在第几页,都写进输出。 开了质量自检,它还会把识别结果标回原文——哪里认错了,你自己能看见。
这三个颜色不是设计师挑的,就是质量自检生成的标注版 PDF 用的颜色。
进 / 出
六种进,五种出
混在一个文件夹里批量转也行。扫描件会被自动认出来,转到 OCR 通道。
输入
输出
图片和扫描件要出文字,需要先装一次 OCR 服务(命令行一条命令装好,依赖有几个 GB,同样全程本地)。 不装也能用,只是扫描件转出来没有文字。
给 Agent 用
让 Agent 自己去翻,而不是把整本塞进去
内置 MCP Server,一行注册就多出 8 个工具。文档留在本机,Agent 只取需要的部分。
# 注册(Claude Code) $ claude mcp add aimorsel -- morsel mcp # 之后 Agent 自己会这么用 get_outline("年报.pdf") get_section("年报.pdf", "财务摘要") search_documents("毛利率")
| 工具 | 它做什么 |
|---|---|
| get_outline | 只返回标题树、每节页码与 token 估算——读大文档的第一步 |
| get_section | 按标题取某一节正文,标题模糊匹配 |
| search_documents | 跨已转换文档检索,命中带页码与标题路径 |
| read_pdf_markdown | 小文档一次读完,直接返回正文 |
| extract_tables | 把所有表格以 CSV 文本返回 |
| get_chunks | RAG 分块 JSONL,每块带页码与标题路径 |
| qa_check | 逐页统计,标出空白页、疑似扫描页、低密度页 |
| convert_pdf | 转换并返回产物清单;没变过的文件直接命中缓存 |
批量
一千份文档,不用守着
中途断电、临时加文件、隔天再跑——接着上次继续,不重复劳动。
- 断点续传
- 只转新的和改过的;换了输出格式或参数会自动重转
- 多进程并发
- 几十份以上明显更快,坏文件不拖垮整批
- 监听文件夹
- 丢进去就转;文件还在拷贝中会等它稳定
- 转换报告
- 每批一份 CSV:状态、页数、耗时、失败原因,Excel 直接打开
- 失败有下限
- 引擎解析不了的文件降级成纯文本兜底,而不是留个空目录
自有评测
数字都在仓库里,每一行都能自己复算
731 份公开语料 × 5 个引擎 = 3224 条记录。真值直接从源文件解析(arXiv 的 LaTeX 源码、法规的 HTML 版、合成件的已知结构),不是人打分,也不用大模型当裁判。
对手AImorsel
- 覆盖把不支持的格式按失败计,衡量的是「一个混装文件夹丢进去,多少份能出东西」。docling 约 11 秒一份,只跑了 300 份分层子集(成功 299),所以不进覆盖图。
- 与 docling、pymupdf4llm 保真持平,耗时少一个数量级;峰值内存 docling p95 2.0 GB,我们 620 MB。
- markitdown 与 pdfplumber 把 10 份阿拉伯语文档按视觉序输出——字一个不少,检索和分词全部失效。我们与 docling 没犯。
两处得说清楚。在 77 份「五个引擎全成功」的小交集上,docling 与 pymupdf4llm 的文本相似度高于我们(0.92 对 0.82)——样本偏标准单栏 PDF,结构指标仍是我们领先。最弱一环是扫描件与图片:数字保真只有 0.716(有文字层 0.891),扫描件里的数字只适合检索定位,别直接进表格。
完整结果表与口径说明 →
语料清单、下载脚本、真值生成器、指标实现与跑批脚本都在仓库的 bench/ 里,同一份 manifest 重跑误差小于 1%。
下载
解压就是全部安装过程
包里自带精简 Java 运行时,不用另装 Java,也不用装 Python。
一个包里含命令行、图形界面、Web 服务、MCP Server 四个程序,共用同一份依赖。
开发者也可以 pip install aimorsel 或从源码装:见 下载页。
开源核心永远免费、永远完整、永远在本地。 数学公式 → LaTeX 和手写识别正在做成可选的本地模型包,同样不联网。