跳到主要内容

开源

我们在生产环境里跑的引擎,开放给所有人用

MindMax 把应用里负责 PDF 转 Markdown 的引擎以 @mindmax/pdf-markdown 发布,许可是 Apache-2.0。应用本身不留私有副本:它和你一样从 npm 安装同一个包,所以团队为自己用户修的每一个问题,都先落在公开仓库里。

npm i @mindmax/pdf-markdown
公开仓库每一处改动都公开评审
发布到 npm 的包@mindmax/pdf-markdown@0.1.0
MindMax 应用导入 PDF
在线转换器在你的浏览器里
你的项目Node 或浏览器
只有一个来源,没有内部分叉。
许可
Apache-2.0
运行时依赖
0
测试
170 个 · 语句覆盖 97.3%
回归语料
22 份真实 PDF
已知缺陷(公开)
17 条
维护方
MindMax 团队

我们开放了什么

只开放这样的代码:一件事做得足够好,离开 MindMax 其余部分也有用,而且团队自己就依赖它。目前是一个项目;下一个也写在下面,连同开放之前还要做完的事。

@mindmax/pdf-markdown

生产环境在用

Apache-2.0TypeScriptv0.1.0gzip 25.1 KB

按版面几何把 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 包 →

缺陷公开,不藏

每一个已知的转换问题都是语料里一条预期失败的断言,也是结果页上的一行:目前 17 条,分布在 10 份文档里。

结果页 →

安全报告 72 小时内响应

通过 GitHub 私下报告,72 小时内首次答复,公告中署名致谢。处理不可信 PDF 的威胁模型逐条写明。

SECURITY.md →

按规则交出责任

合并 3 个 PR 或被接受的语料用例,申请即可成为 triager;两位 triager 担保即可成为 maintainer。不面试,不看关系。

GOVERNANCE.md →

为「没有我们也能继续」而设计

目前发布凭证由一位所有者持有。如果所有者失联 90 天,维护者可以从 fork 继续:许可本来就允许,治理规则把它写成了预案。

连续性条款 →

证据和代码一起发布

测试语料里的 22 份 PDF 入库前都核过许可,任何人都能在和我们相同的文档上重跑全部测试。

ATTRIBUTION.md →

一份 PDF 就是一次贡献

你能提交的最有用的东西不是补丁,而是一份引擎转错了、而你有权分享的文档。

  1. 找一份转得不好的 PDF

    用在线转换器或 playground 跑一遍,记下哪里不对:表格被读成段落、页眉没去掉、两栏被横着读。

  2. 提交语料用例

    issue 模板只要文档(或出错的那一页)和它的许可。有了这些,问题才修得了。

  3. 它变成一条失败的测试

    维护者写一条描述正确输出的断言,CI 故意变红。

  4. 修好之后一直是好的

    不管是我们还是你修,测试变绿之后,以后每个 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 内部包、有了自己的测试就开放。不给日期;开始动工时这一页会写明。

引用本页