开源
我们在生产环境里跑的引擎,开放给所有人用
MindMax 把应用里负责 PDF 转 Markdown 的引擎以 @mindmax/pdf-markdown 发布,许可是 Apache-2.0。应用本身不留私有副本:它和你一样从 npm 安装同一个包,所以团队为自己用户修的每一个问题,都先落在公开仓库里。
npm i @mindmax/pdf-markdown@mindmax/pdf-markdown@0.1.0- 许可
- Apache-2.0
- 运行时依赖
- 0
- 测试
- 170 个 · 语句覆盖 97.3%
- 回归语料
- 22 份真实 PDF
- 已知缺陷(公开)
- 17 条
- 维护方
- MindMax 团队
我们开放了什么
只开放这样的代码:一件事做得足够好,离开 MindMax 其余部分也有用,而且团队自己就依赖它。目前是一个项目;下一个也写在下面,连同开放之前还要做完的事。
@mindmax/pdf-markdown
生产环境在用按版面几何把 PDF 的文字层重建成 Markdown:跨栏阅读顺序、跨行跨页的段落接续、标题层级、列表、表格和链接,并去掉页眉页脚和页码。TypeScript 编写,零运行时依赖,Node 18+ 与任意浏览器都能跑。
正在运行于:MindMax 桌面应用在线 PDF 转 Markdown
- 测试
- 170
- 语句覆盖率
- 97.3%
- 语料文档
- 22
- 断言通过
- 120/120
- 公开的未修缺陷
- 17
Word(.docx)导出引擎
下一个开放把 HTML 或 Markdown 变成原生 Word 文档:真正的标题、列表和表格,公式是可编辑的 Word 公式而不是图片。约 1,700 行 TypeScript,目前由桌面应用和 Markdown 转 Word 等网页工具共用。
开放之前要做完的事
- 切断它对 MindMax 内部包的依赖,让它能独立构建、独立测试。
- 给它配上自己的测试,以及一组往返样例:必须在 Word 里打开后长得对的文档。
- 定下一套愿意长期保持的公开 API,再以 Apache-2.0、按与 PDF 引擎相同的治理规则发布。
不给日期。错过一个日期比不给日期更伤信任;开始动工时这张卡会更新,发布时再更新一次。 看看它现在在哪里运行。
我们的承诺,以及它们写在哪里
写在营销页上的承诺没有成本。下面每一条都写在仓库里,有文件可以链接,也可以拿来追问我们。
只有一个来源,没有内部分叉
MindMax 像任何用户一样从 npm 安装 @mindmax/pdf-markdown。没有一份内部副本可以让修复留在私有仓里,也不存在你读不到的引擎版本。
npm 包 →一份 PDF 就是一次贡献
你能提交的最有用的东西不是补丁,而是一份引擎转错了、而你有权分享的文档。
找一份转得不好的 PDF
用在线转换器或 playground 跑一遍,记下哪里不对:表格被读成段落、页眉没去掉、两栏被横着读。
提交语料用例
issue 模板只要文档(或出错的那一页)和它的许可。有了这些,问题才修得了。
它变成一条失败的测试
维护者写一条描述正确输出的断言,CI 故意变红。
修好之后一直是好的
不管是我们还是你修,测试变绿之后,以后每个 PR 都会再跑一遍你的文档。
许可覆盖到哪里为止
- 开放:引擎及其证据
文字层进,Markdown 出,不发网络请求。把 PDF 变成结构化文本所需的全部代码,加上检验它的语料和结果。
- 不开放:MindMax 应用
扫描件 OCR、带原文引用的 AI 阅读、批注、编辑器和桌面应用。这是养活团队的产品,引擎上花的时间也由它支付。
- 不授权:名称
Apache-2.0 覆盖代码,不覆盖 MindMax 商标。可以说你的项目用了
@mindmax/pdf-markdown,但请不要把它叫作 MindMax。详见 TRADEMARKS.md。
常见问题
MindMax 开源吗?
部分开源,边界写得很清楚。MindMax 正在运行的 PDF 转 Markdown 引擎 @mindmax/pdf-markdown 以 Apache-2.0 开源,由 MindMax 团队公开维护;桌面应用本身(OCR、AI 阅读、批注、编辑器)是专有软件。
@mindmax/pdf-markdown 能用在商业产品里吗?
可以。Apache-2.0 允许商用、修改和再分发,并附带明确的专利授权。分发时保留 LICENSE 和 NOTICE 文件即可。
这个库会把我的 PDF 发到别处吗?
不会。包里没有任何网络请求,也不自己加载 pdf.js,由你传入已经打开的文档。在浏览器里,文件不会离开当前标签页。
怎么参与贡献?
通过语料用例模板提交一份转得不好、而你有权分享的 PDF。也欢迎提交代码:改动已有输出要写明理由,不要为了修一份文档弄坏另一份。 CONTRIBUTING.md
如果 MindMax 不再维护了怎么办?
许可本身就允许任何人 fork。治理规则更进一步:所有者失联 90 天,维护者可以从 fork 继续;除非所有者同意,否则换一个名字。
为什么不把整个应用开源?
因为应用是团队维持工作的收入来源,引擎上的投入也靠它。我们开放离开 MindMax 其余部分也有用、而且自己就依赖的组件,并明确说出是哪几个。
MindMax 下一个开源什么?
Word(.docx)导出引擎,含可编辑公式。等它不再依赖 MindMax 内部包、有了自己的测试就开放。不给日期;开始动工时这一页会写明。