扫描版 PDF 转 Markdown

扫描件、拍照的页面和纯图片 PDF,直接在这个标签页里用 OCR 识别。页面不离开你的设备,转换器还会告诉你哪些行它没把握。

把 PDF 拖到这里

也可以粘贴或选择文件。一次最多 20 个,就在这个标签页里转换。

手边没有文件?试试

文件只在这个浏览器标签页里读取,从不上传。

这里的 OCR 怎么工作

扫描版 PDF 里存的是页面图片,不是文字。要从中得到 Markdown,就得用文字识别模型逐张读图。大多数网站的做法是把文件上传到服务器,这里则是让模型来到你的设备上:

  1. 转换器先查看每一页。 已有文字层的页面直接读取,更快也更准确。没有文字层,或文字层由映射不到字母的字符组成的页面,交给 OCR。
  2. 把页面绘制成图片,就在标签页里完成,分辨率足以看清小字。
  3. 检测模型找出文字行,识别模型逐行读取。两者都是 PaddleOCR 模型(Apache 2.0),通过 WebAssembly 运行,浏览器允许时使用多线程。
  4. 按阅读顺序重新排列各行:合并段落,根据行高推断标题,把按列对齐的行重建成表格。之后这一页就和其他页面一样转成 Markdown。

第一次转换扫描件时会下载模型:拉丁字母和中文约 6 MB,日文或韩文约 20 MB。之后模型留在缓存里,OCR 立刻就能开始。

速度如何?

在较新的笔记本电脑上,模型加载完后,普通页面每页约 2 到 4 秒。手机更慢,字小又密的页面也比一封信慢。进度行会显示正在识别哪一页,取消随时可以停下。已经识别的页面会保留,重新开始时从停下的地方接着做。

如果只有部分页面是扫描的,就只有这些页面走 OCR。一份 200 页的报告,只有附录三页是扫描件,转换速度和完全没有扫描页时几乎一样。

检查 OCR 没把握的页面

识别模型很好,但并不完美。转换器不会让你从头校对到尾,而是记录模型对每一行的置信度。只要某页有一行低于阈值,这页就会出现在待检查页面里,标注"OCR 对部分字词没把握",页面图像就放在它的 Markdown 旁边,方便对照。

相反的问题也在这里解决。有些 PDF 的文字层是坏的:字体映射到错误的字符,读出来毫无意义。这些页面会被标记为疑似乱码,点用 OCR 识别这一页,就只针对这一页从图像重新识别。

选对模型

你的文档在"扫描页"中选择下载大小
英语、西班牙语、法语、德语、葡萄牙语等拉丁字母语言拉丁字母和中文约 6 MB
中文(简体和繁体印刷体)拉丁字母和中文约 6 MB
日文日文约 21 MB
韩文韩文约 18 MB

你的选择会在下次访问时保留。中文文档夹杂英文时,"拉丁字母和中文"模型两者都能读;日文或韩文文档夹杂英文时,选日文或韩文模型更好,因为每个模型也认识拉丁字母和数字。

让扫描件识别得更好

  • 自己扫描时用 300 dpi。 低于 200 dpi,小字就开始糊成别的字母。
  • 页面越正,识别越好。 斜着拍的页面,或者向书脊弯进去的页面,边缘附近可能丢词。
  • 文字层不可信时,在扫描页里选所有页面,比如老式扫描仪 OCR 生成的文字层。转换器会忽略它,自己识别每一页。
  • 在手机上转换长扫描件时,可以只转换部分页面,避免内存不足。

OCR 目前还做不到的

  • 手写体不支持,模型是用印刷体训练的。
  • 拥挤或歪斜的表格。 扫描的表格在列对齐清楚时会变成 Markdown 表格。列挨得很紧,或者页面扫歪了,就可能输出为一行行文字。详见 PDF 表格转 Markdown。
  • 公式按模型看到的字符输出,不会变成 LaTeX。
  • 上面模型以外的语言,比如阿拉伯文、希伯来文、西里尔字母、希腊文、泰文或印地文,OCR 都不支持。不过这些语言的 PDF 只要有文字层,照样能转换,因为不需要 OCR。

浏览器里的 OCR 安全吗?

安全。每一页都在这个标签页里绘制和识别,文字一直留在它的内存里,直到你复制或下载。页面的任何内容,无论图像还是文字,都不会发送到任何地方。所以扫描的合同、病历和其他不想上传的文件都可以放心用。运行时你可以打开浏览器开发者工具的网络面板查看:没有任何请求带着你的文件或文字。

常见问题

能转换文档照片吗?

请先把照片做成 PDF,大多数手机都能在分享菜单里把扫描结果或照片存为 PDF。然后把 PDF 拖到这里。暂时还不直接接受图片文件。

为什么第一次扫描比较慢?

因为第一次要下载 OCR 模型,只下载这一次。只要浏览器保留缓存,之后的扫描即使换了一天也不用再等。

扫描件有文字层,但文字是错的,怎么办?

那个文字层来自扫描仪自带的 OCR,质量可能很差。在扫描页里选所有页面重新转换,或者在看起来不对的页面上用用 OCR 识别这一页。

能离线使用吗?

转换开始后,只要模型已在缓存里,就不需要网络。中途断网,处理也会继续。