# Math OCR

> 貼上公式截圖就得到可編輯的 LaTeX，KaTeX 即時預覽，可複製成 LaTeX、$…$ 或 MathML 貼進 Word。pix2text-mfr 在瀏覽器裡跑，圖片不上傳，約 118 MB 只下載一次。

- URL: https://bytescope.dev/zh-Hant/math-ocr/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/math-ocr.md) · [ja](https://bytescope.dev/ja/math-ocr.md)
- Runs: 全程在你的瀏覽器裡跑，圖片不會上傳。模型檔只會從 huggingface.co 下載一次，ONNX Runtime 的腳本則從 cdn.jsdelivr.net 載入。
- Requires: Any modern browser. Uses WebGPU where the browser has it and falls back to WebAssembly on the CPU, which is slower. The model file (about 118 MB) is downloaded once from huggingface.co and the ONNX Runtime script is loaded from cdn.jsdelivr.net; images are never uploaded.
- Updated: 2026-09-08

## What it does

### 一次一個公式

這個公式辨識 OCR 在只有一個公式、或一個對齊的式子區塊時表現最好：貼上截圖、丟一張照片，或開一張圖再框出你要的那條式子。框選的區域會補白成正方形再縮到模型的輸入尺寸，所以緊貼公式的框，會比整頁夾著文字的畫面辨識得更好。整頁講義不是它的目標——文字和數學混在一起時，請一條一條框。這次開頁辨識過的公式會列在頁面上，關掉就消失，什麼都不會存。

### 開著預覽改 LaTeX

辨識出來的 LaTeX 會放進可編輯的欄位，旁邊是 KaTeX 的渲染結果，邊打字預覽邊更新。解析錯誤會直接顯示在預覽區，不會整塊空白，所以少一個大括號馬上看得到。頁面也會順手整理模型的輸出——收掉多餘的空白、把 `\operatorname { s i n }` 改回 `\sin`——大括號沒配對時會提醒。`\text{…}`、`\mathrm{…}`、`\operatorname{…}` 裡面的空白也會被收掉，因為模型是一個字母一個字母讀的，分不出哪個空白是字與字之間的，需要的空白請自己補回去。接著挑你要的形式複製：原始 LaTeX 給文件用，`$…$` 給 Markdown 或 Jupyter 的行內數學，`$$…$$` 給獨立一行的式子，MathML 則是要貼進文書軟體時用。

### 圖片轉 LaTeX 的準確度

模型是 pix2text-mfr，MIT 授權的開源公式辨識模型，約 118 MB，從 huggingface.co 下載一次後由瀏覽器快取（執行時用的 ONNX Runtime 腳本則從 cdn.jsdelivr.net 載入）。我們用 KaTeX 把 20 條印刷體公式各渲染成兩種大小，40 次全部跑過，39 次完全正確。這個測試只涵蓋乾淨的印刷體。手寫公式這裡還沒有實測，而公式辨識模型遇到手寫通常會差很多，請預期要改更多地方。解析度太低的截圖、斜著拍的照片也會拉低命中率；框大一點、拍正一點都有幫助。

### 渲染一樣，LaTeX 不一定一樣

同一個長相的公式可以有好幾種寫法：`\frac{a}{b}` 和 `a/b`、`\left(` 和普通的 `(`、`x^{2}` 和 `x^2`。模型回傳的是它認為符合圖片的寫法，不一定是原稿用的那種。如果你要對照一份既有的文件，請連 LaTeX 本身一起讀，不要只看預覽。另外，這只是個抄寫工具——它把圖變成標記，不會化簡、不會解、也不會幫你檢查數學對不對。

### 付費服務太大材小用的時候

Mathpix 這類付費服務做的是同一種轉換，再多加一些額外功能。如果只是論文裡一條、作業報告一條、投影片一條這種偶爾的需求，這頁就夠了，不用帳號也不用上傳：圖片留在瀏覽器裡，模型在瀏覽器有 WebGPU 時用 GPU、沒有時用 CPU 跑，兩邊結果相同。整份掃描文件的話，文字交給 OCR 工具，從裡面框出來的公式再交給這頁。

## Limits

Does not solve or check the mathematics: it only turns the picture into LaTeX markup. It works best on one formula at a time, handwriting has not been tested, and the same rendering can come from different LaTeX.

## FAQ

### 手寫公式讀得出來嗎？

它會試，但我們還沒量過，而公式辨識模型遇到手寫通常比印刷體差很多。40 次對 39 次那個數字是 KaTeX 渲染的印刷體公式測出來的。手寫請預期要多改一些 LaTeX，並用即時預覽核對。

### 可以把整頁筆記一次轉掉嗎？

沒辦法一次處理。模型是為單一公式或一個對齊的區塊設計的，旁邊有文字會讓它混亂。把整頁圖開起來，一條一條框出你要的公式，頁面會裁切、補白再辨識。頁面上的文字部分請改用 OCR 工具。

### 結果要怎麼貼進 Word？

用 MathML 複製再貼進 Word，Word 會把它變成可編輯的方程式。我們還沒在每個 Word 版本或其他文書軟體上驗證過，貼完請檢查式子；如果貼進去變成純文字，改用 Word 自己的 LaTeX 輸入模式貼原始 LaTeX。

### 可以複製成哪些格式？

四種：原始 LaTeX、行內數學用的 `$…$`、獨立一行用的 `$$…$$`，以及 MathML。前三種可以貼進 LaTeX 文件、Markdown、Obsidian 或 Jupyter；MathML 給 Word 和其他接受 MathML 的編輯器。

### 它會幫我解方程式嗎？

不會。它只把圖片抄成 LaTeX 標記，不化簡、不計算、也不檢查數學。需要答案的話，把 LaTeX 貼進電腦代數系統。

### 要下載多大？圖片會上傳嗎？

約 118 MB，從 huggingface.co 抓一次後留在瀏覽器快取（另外會從 cdn.jsdelivr.net 載入 ONNX Runtime 腳本）；頁面會顯示模型是不是已經下載過。圖片絕不上傳——辨識在你的瀏覽器裡進行，有 WebGPU 用 GPU、沒有就用 CPU，兩邊輸出完全相同。

### 為什麼辨識出的 LaTeX 跟原稿不一樣？

因為很多種 LaTeX 寫法會畫出同一張圖。模型只看得到渲染結果，所以作者寫 `a/b` 的地方它可能回 `\frac{a}{b}`，`x^2` 可能回成 `x^{2}`。預覽告訴你長相對不對；寫法由你自己調。

## Related tools

- [Image to Text](https://bytescope.dev/zh-Hant/image-to-text.md) — 從照片讀出整頁印刷文字。
- [Document Scanner](https://bytescope.dev/zh-Hant/document-scanner.md) — 把手機拍的講義攤平，存成一份 PDF。
