Mathpix

图片公式转SVG矢量图:识别后重新渲染

更新于

图片公式转SVG,可靠的做法是识别后重新渲染:先用「图片识别」把截图里的公式变成 LaTeX 源码,对照原图核对,再从顶栏「导出」选「SVG 矢量」,得到的 formula.svg 是按源码重新排出来的矢量图,放大多少倍笔画都清晰。把位图直接另存或自动描边,得到的仍是原图的像素或一圈粗糙轮廓。识别和导出都要登录并开通本站会员。

输入从哪来:三类图片各先做一步

要转的公式图片通常来自三个地方,送去识别之前各有一步准备:

  • 课件、网页上的截图。 先把页面放大到公式清楚,再框住一条公式截图;截图可以在识别弹窗里直接粘贴。
  • 手机拍的教材、笔记。 照片传到电脑上,裁掉多余部分、转正后再上传。
  • 旧文档里嵌着的公式图片。 在原文档里右键另存为图片;存出来是 WebP 的也能直接上传。

图片识别收 PNG、JPG、BMP、WEBP、GIF,单张不超过 20MB,一次一张。

转换步骤:识别、核对、导出

  1. 在公式编辑页点「识别」→「图片识别」。截图在弹窗开着时按 Ctrl+V(Mac 上 ⌘V)粘贴,识别直接开始;图片文件拖进上传区后点「开始识别」。
  2. 在结果卡片点「插入」,公式进入编辑区后把公式工具栏右端的「LaTeX / 可视化」开关切到「LaTeX」,对照原图核对源码,改掉认错的字符。
  3. 点「可视化」切回来。LaTeX 模式下「导出」是灰的,悬停会提示「请切换到可视化后再导出」。
  4. 点顶栏「导出」→「SVG 矢量」,浏览器下载 formula.svg。
  5. 放进文档:Word、PowerPoint 里用「插入」→「图片」选这个文件,具体菜单以当前版本为准;网页里当普通图片引用即可。

导出菜单展开,含 SVG 在内的七种格式

重新渲染和自动描边差在哪

自动描边与识别后重新渲染的两栏对照

自动描边(也叫矢量化)的输入是像素:它沿着黑白交界画路径,原图里的模糊、锯齿和压缩噪点会一起被描进去,细小的上下标常被描成一团,得到的文件里也没有公式的信息。

识别后重新渲染的输入是源码:导出时由排版引擎按字体重新画出每个字符,笔画粗细一致,分数线、根号横线都是规整的直线。源码还在编辑器里,发现错处改一个字符再导出即可,用不着回头找原图。

以贝叶斯公式为例,截图识别并核对后的源码是:

P(H\mid E)=\frac{P(E\mid H)\,P(H)}{P(E)}

贝叶斯公式:P(H|E) 等于 P(E|H)P(H) 除以 P(E)

转换后要检查的三处

  1. 放大看清晰度。 用浏览器打开 formula.svg,放大到 400% 左右:分数线、竖线边缘仍然锐利,说明拿到的是矢量;边缘出现方块状像素,说明拿错了文件。
  2. 对照原图看字符。 贝叶斯公式里条件竖线容易被认成字母 l 或数字 1,分子里的 P(E|H) 与左边的 P(H|E) 也容易被写反。SVG 是按源码画的,源码错一个字,图上也错一个字。
  3. 插入后看大小与对齐。 插进 Word 或幻灯片后,拖动四角等比缩放到与正文字号相称;同一页有几条公式时,调成一样的高度,看着才整齐。

导出 SVG 后要检查的三处

原图本身模糊、识别不准的,先按低清扫描公式识别里的办法补救;开通会员前想确认登录状态,看公式识别登录限制。

手边那张一放大就发虚的公式截图,识别出源码核对一遍,导出「SVG 矢量」换进讲义,打印和投影都会清楚很多。

延伸阅读

常见问题

为什么不能直接把图片转SVG?
能转,但得到的东西不好用。把位图直接另存为 SVG,文件里装的还是那张像素图,放大照样模糊;自动描边会沿着像素边缘画轮廓,笔画粗细不匀、小字容易粘连,公式也改不了。先识别出源码再重新渲染,字符按字体重画,放大后依然清晰,发现错处只要改源码再导出一次。