关于 My PDF 2 MD

最后核对

My PDF 2 MD 在不上传文件的前提下把 PDF 转换为 Markdown。本页说明谁在运营它、转换如何进行、在什么情况下会失败,以及一个从不接收你文件的免费工具靠什么维持运转。

谁在运营本站

My PDF 2 MD 由 MyPDF2MD.com 开发并运营,这是一个位于Kozhikode, Kerala, India的独立软件项目。背后没有风险投资,不是某个文档处理 API 的门面,也不会转售你转换的任何内容。

本站由一个小团队维护。没有藏在 chatbot 后面的工单队列:邮件会送到真人手里。一般问题请发至 support@mypdf2md.com;涉及个人数据的事项请发至 privacy@mypdf2md.com。两者都会在五个工作日内回复;如果你不想写邮件,联系页面提供了表单。

为什么会有这个工具

网上几乎所有 PDF 转 Markdown 的工具都是同一套做法:把文档上传到一台你一无所知的服务器,在那里处理,然后请你相信隐私政策里的一句话,接受它对后续处理的说明。对一份餐厅菜单,这没什么问题。但换成签署过的合同、体检报告、董事会纪要或未发表的书稿,这就不是一个人在明白利害之后还愿意接受的交换。

避开这种交换的技术早已存在于浏览器中。Mozilla 的 PDF 引擎 PDF.js 就运行在页面内,可以在文档任何部分都不经过网络的情况下读取它。缺的从来不是能力,而是围绕这项能力构建的工具。因此本工具默认在你自己的机器上完成转换,首页上的隐私说明描述的是架构,而不是对我们行为的承诺。

这个决定有代价,也应当直说:浏览器标签页的内存和算力都不如服务器,因此非常长或非常复杂的文档在这里会比托管服务慢。但对于人们真正会担心的那类文档,我们认为这是正确的取舍。

转换到底是怎么完成的

这是多数转换器一句「智能识别」带过的部分,但值得理解,因为它直接解释了本工具会犯的错误。

PDF 里没有标题、段落、列表或表格,只有位于特定坐标上的字形。当文字处理软件导出 PDF 时,原文档的语义结构 —— 这一行是二级标题、这几行属于同一段、这些单元格构成一张表 —— 会被丢弃,取而代之的是在页面上绘制字符的指令。把 PDF 转成 Markdown,是从几何信息反推这套结构,而推断不等于提取。

转换器首先确定正文字高:文档中出现频率最高的字号,并按该字号下的字符数量加权。此后一切都以这个单位的倍数来衡量,这正是结果与文档用 9pt 还是 14pt 排版无关的原因。

之后的规则都是几何的。基线相差在正文字高三分之一以内的文本片段属于同一行;行距不超过一点五倍正文字高的连续行属于同一段落;明显大于正文的文本 —— 大约 1.2 倍以上 —— 是标题,大多少决定它成为 H1、H2 还是 H3;连续两行及以上、单元格在至少两个相同 x 坐标上对齐的,判定为表格;页面中部附近的纵向空白会被视为分栏,使阅读顺序不会左右跳跃;页复一页出现在相同位置的页眉页脚会被识别并移除。

行内格式不靠猜测,而是直接读自字体本身:粗体和斜体来自字体真实的字重与倾斜,等宽片段转为 code。PDF 中内嵌的链接会保留为 Markdown 链接。

它会在哪里出错

既然结构靠推断,失败方式就是可预测的。与其让你在重要文档上才发现,不如先列清楚。

  • 只靠加粗而不改变字号来区分标题的文档,等于没有给标题检测留下任何依据 —— 这些标题会输出为普通段落。
  • 含合并单元格的表格、嵌套表格,以及内容折行到多行的单元格会丢失对齐,因为列检测依据的是 x 坐标,而合并单元格破坏了这个网格。
  • 比简单两栏更复杂的多栏排版 —— 例如带引文框和边栏的杂志页面 —— 可能产生错乱的阅读顺序。
  • 数学符号不会转换为 LaTeX。以文本排版的公式会按其组成字符输出;以图片插入的公式则完全不会出现。
  • 不提取图片。输出的是文字和结构。
  • 扫描件完全没有可选中的文本,因此浏览器内转换得不到任何内容。这种情况由下文所述的可选文字识别单独处理。

唯一会离开你设备的东西

扫描件本质上是一张页面照片,里面根本没有可读的文本,因此在浏览器里怎么解析都不会有结果。要读它需要光学字符识别,而这需要的算力远超一个浏览器标签页。

仅在这种情况下,你可以请我们在自己的服务器上识别文档。这从来不会自动发生。工具检测到文件没有可选文本后会明确告知,并把识别作为一个需要你确认的选项提出:在任何数据发送之前,对话框会说明将上传多少页、发往何处、保留多久。

识别在我们自己的基础设施上、使用我们自己的引擎运行。文件仅在任务期间驻留内存,任务结束即销毁;不写入磁盘,也不交给任何第三方。我们保留的只是一条使用记录 —— 页数、时间戳、识别语言,以及你的账户 ID 或经加盐哈希的 IP —— 用于执行每日额度和发现滥用,不包含文档的任何内容,并在三十天后删除。

识别结果是估计而非誊录。它会认错字符,尤其是在姓名、数字、日期和编号中;读不出的词会被直接丢弃而不是标出。结果会相应标注,并附上引擎自身的置信度分数和它最没把握的页码清单。它不识别手写体,也不转换数学公式。

免费工具如何维持

网页版转换器免费、无需注册,并且带有广告。与其让你自己发现,不如写在页面上:本站靠广告获得收入,不靠你的文档获得收入。

它也无法靠你的文档获得收入 —— 这是架构本身的结果,而不是一条要你相信的政策。在你浏览器里转换的文件根本不会到达我们这里。既然不存在上传,这里也就不存在可供挖掘、训练或出售的 PDF 语料。

广告只在你同意之后才会加载。在 Cookie 横幅中拒绝广告类别,就不会加载任何广告脚本 —— 不是加载一个少显示广告的脚本,而是一个都不加载。分析统计同理。两个类别在你开启之前都处于关闭状态,页脚有链接可供你之后更改选择。

本站没有任何页面要求你付费:没有可购买的东西,没有可升级的套餐,也没有需要创建的账号。

我们不做的事

  • 我们不上传在浏览器中转换的文档 —— 不存在能够做到这件事的代码路径。
  • 使用网页版转换器,我们不要求账户、邮箱地址或登录。
  • 我们不存储、不索引、不用于训练、也不出售任何文档或转换结果。
  • 在你同意相应类别之前,我们不加载广告和分析统计。
  • 我们不对你转换的文档或你取回的 Markdown 主张任何权利。

技术构成

给更想看具体细节而非保证的读者:

PDF 解析PDF.js,运行在浏览器的 Web Worker 中
结构识别基于定位文本片段的自研空间布局解析器
输出格式GitHub Flavored Markdown,含竖线表格
应用框架Next.js(App Router)、React 与 TypeScript
界面语言10 种,阿拉伯语支持从右到左排版
最大文件大小50 MB
费用免费,广告支持,无需账户
运营方MyPDF2MD.com,Kozhikode, Kerala, India

更正

如果本站有错 —— 指南里的事实错误、以我们未曾描述的方式失败的转换,或本页与工具实际行为不符的说法 —— 请写信到 support@mypdf2md.com,我们会更正并说明改动了什么。本页顶部的日期,是这份内容最后一次与产品核对的时间。