ByteScope

Math OCR

貼上一個公式的截圖,拿到可以邊改邊看預覽的 LaTeX。印刷體公式在我們的測試裡 40 次對了 39 次;手寫還沒測,通常會差很多。

全程在你的瀏覽器裡跑,圖片不會上傳。模型檔只會從 huggingface.co 下載一次,ONNX Runtime 的腳本則從 cdn.jsdelivr.net 載入。

模型

pix2text-mfr(MIT 授權),專門辨識數學公式的模型。一次讀一條公式,全程在你的裝置上處理。

目前使用: 偵測中…

公式圖片

把公式圖片拖到這裡

或點一下選檔。也可以直接貼上截圖(Ctrl+V)。

LaTeX

預覽

辨識出來的公式會顯示在這裡。

複製為

貼到 Word 裡會變成可編輯的方程式。不是每個 Word 版本都驗證過。

這次的紀錄

這次辨識過的公式會列在這裡,不會保存。

不只一條公式? 整頁文字 · 掃描講義

使用前先看這段

  • 一次一條公式,或一個對齊的區塊,效果最好。頁面上有其他文字時,請把每條公式分開框選。
  • 手寫公式還沒測試過,而且通常比印刷體差很多,要多花時間修正。
  • 我們的測試裡,40 條印刷公式(用 KaTeX 以兩種字級渲染)有 39 條完全正確。
  • 同樣的外觀可能來自不同的 LaTeX,例如 \frac 和 /。要對照文件的話,請看原始碼。
  • \text{}、\mathrm{}、\operatorname{} 裡面的空格會被拿掉,因為模型是一個字母一個字母讀的。單字之間的空格請自己補回去。
  • 很長的公式在 CPU 上會很慢,超過約 500 個符號會被截斷,請一次框一段。
  • 它只負責把公式抄下來,不會解題,也不會檢查數學對不對。
  • 圖片不會上傳。模型檔(約 118 MB)只會從 huggingface.co 下載一次,ONNX Runtime 的腳本則從 cdn.jsdelivr.net 載入。

關於這個工具

一次一個公式

這個公式辨識 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 工具,從裡面框出來的公式再交給這頁。

常見問題

手寫公式讀得出來嗎?

它會試,但我們還沒量過,而公式辨識模型遇到手寫通常比印刷體差很多。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}。預覽告訴你長相對不對;寫法由你自己調。