PDF2MD:把 PDF 轉 Markdown 的工具,原始碼攤開引擎與成本

PDF2MD 官網已整站掛在資料庫錯誤上,開發者也凍結了專案。原始碼顯示它的轉換引擎是 Mistral 的雲端 OCR、檔案會出站交付、隱私政策承諾的刪除邏輯在程式碼裡缺席。想轉 PDF 成 Markdown,可以看免費牆數字、自接 API 的成本,與站內替代工具路線。

用 AI 摘要這篇文章:

先講結論:2026 年 9 月 11 日連上 pdf2md.site,這個網站已經整站掛在資料庫錯誤上,而且不是掛一天兩天。想找一個「PDF 轉 Markdown 線上工具」的人,現在不必再等它復活,也不必到處找鏡像站。不過這個工具在 GitHub 上留了一份完整的原始碼,把它攤開看,會看到一個比「工具壞了」更有意思的東西:它的轉換引擎是向 Mistral 租來的,收費牆畫在別人家的引擎外面,而隱私政策裡承諾的刪除動作,在程式碼裡找不到。下面按這個順序講:網站怎麼了、原始碼裡有什麼、檔案怎麼流動、收費長什麼樣、以及你的 PDF 轉換需求可以改走哪條路。

官網現況:整站掛在同一個資料庫錯誤上

實際連線檢查:首頁、定價頁、登入頁、會員頁、中文版路徑、robots.txt,六條路徑全部回 HTTP 200,但內容都是同一段 64 位元組的錯誤訊息,韓文寫的,意思是 MySQL 的主機、帳號、密碼或資料庫設定有誤。瀏覽器看到的是 200,內容卻只有一行訊息,這代表網站程式根本沒有跑起來,連前端殼都沒送出來。域名還解析得到,也還掛在 Cloudflare 後面,但後面的服務沒有人顧。

PDF2MD 官網現況:整頁只剩一行資料庫錯誤訊息Pin
2026 年 9 月 11 日的 pdf2md.site:全站六條路徑都只剩這一行韓文的資料庫設定錯誤

死亡的時間軸可以對出來。網際網路檔案館(Wayback Machine)最後一次完整收錄這個網站是 2025 年 9 月 14 日,當時它活著,長相很標準:一個拖放上傳框,未登入時寫著「登入後可上傳最大 30MB」,旁邊是功能三格與定價卡,免費版每月 5 次、付費版年繳 49.9 美元,再往下輪播三則署名「前端工程師」「內容創作者」「技術寫手」的好評。第三方爬蟲 Common Crawl 在 2026 年 7 月的紀錄裡,這個網域的 robots.txt 一度用 302 轉址指向另一個毫不相干的網站。從「還能正常收錄」到「robots.txt 都被轉走」再到「全站資料庫錯誤」,這條下滑曲線走得完整。

PDF2MD 2025 年 9 月的定價卡存檔畫面Pin
網際網路檔案館 2025 年 9 月 14 日存檔的定價卡:免費版每月 5 次、付費版年繳 49.9 美元

開發者也沒有回來修的跡象。GitHub 專案 Open-PDF2MD 全部只有兩個 commit:2025 年 5 月 19 日的第一筆,和 2025 年 10 月 11 日的一次訂閱與統計整併,之後就凍結到現在。沒有發布過任何 release,議題區是空的,188 顆星、26 次 fork 都停在原地。一個網站的死法有很多種,這種是最明確的一種:程式碼不動、網站不修、人不在。

Open-PDF2MD 的 GitHub 專案頁面Pin
GitHub 上的 Open-PDF2MD:188 顆星、2 個 commit、沒有授權檔也沒有 release

打開原始碼:轉換引擎不在這個 repo 裡

這份原始碼最有價值的地方,是它回答了「PDF2MD 到底是什麼」。

答案:一個 Next.js 網站,加上一段把檔案轉手交給別人的程式。真正把 PDF 變成 Markdown 的,是 Mistral 的雲端 OCR 服務。app/api/convert/route.ts 寫得很直白:伺服器收到檔案後,打包送去 https://api.mistral.ai/v1/ocr,模型指定 mistral-ocr-latest,拿回每一頁的 Markdown,串接起來還給你。整份 package.json 的依賴清單裡,找不到任何一套 PDF 解析庫或光學辨識庫;翻遍 app、lib、components 三個目錄,實際被用到的辨識程式碼只有那一段 API 呼叫。辨識這件事,本來就不發生在這個網站上。

站方其實有承認,只是承認得很小聲。FAQ 頁寫著「我們使用 Mistral AI 的 OCR-2503 模型」;而首頁行銷文案裡的「先進 OCR 技術」「高品質轉換」,翻譯成白話就是那個 API 端點。Mistral 官方把這個模型(官方模型頁上的 OCR 4.1,API 名稱維持 mistral-ocr-latest)定位成文件理解引擎,宣稱能把版面、表格直接輸出成 Markdown;這是官方說法,而官網已死,這個網站當時的實際輸出已無從對照。順帶一提,掃描版 PDF 和原生文字版 PDF 在這類服務眼裡是同一種輸入,反正都送去做光學辨識,所以辨識品質完全取決於 Mistral 那一端,與這個網站的程式碼無關。

還有個藏在程式碼裡、介面上看不出來的能力:轉換介面其實也接受圖片檔。上傳欄位只讓你選 .pdf,但後端的檔案檢查連 image 開頭的類型也一併收下,圖片會走同一條 OCR 路線回 Markdown。對使用者來說,這是個沒有入口的功能。

原始碼裡還有一個頗有味道的細節:formatToMarkdown 這個函式,寫了三十多行的標題、清單、粗體推測邏輯,卻從來沒有被呼叫過。實際路線是 Mistral 直接回傳每頁的 Markdown,網站端只負責把頁與頁串起來。這段死碼像是一個早期設想的殘骸:本來想自己做格式整理,後來發現 API 給的已經夠用,舊計畫就留在原地沒刪。

這層身分對使用者的意義很直接:你上傳的 PDF 內容會出站,交給 Mistral 處理,這是雲端服務,不是本機轉檔;而這個工具自己也沒有技術護城河可談,它賣的是包裝、帳號系統和收款流程。這不是罪名,很多正當服務都這樣組合,但值得在付費前知道。

檔案出門的路徑:小的塞進信封,大的放上架子

原始碼把檔案流向也交代清楚了,這段值得慢慢看。

5MB 以下的檔案走第一條路:整份檔案轉成 base64 文字,直接塞進 API 請求裡送給 Mistral,全程不落地。超過 5MB 的檔案走第二條:先上傳到站方設定的 Cloudflare R2 儲存空間,再把這個網址交給 Mistral 去抓。會分成兩條,推測是因為把大檔轉成 base64 塞進單一請求,體積會再膨脹約三分之一,請求很容易就爆掉;先放儲存空間再給網址,是繞過這個限制的常見做法。R2 那組環境變數的名稱就叫 CLOUDFLARE_R2_PUBLIC_URL,公開網址的意思,檔名格式是「使用者編號-時間戳.延伸檔名」。也就是說,大檔案會在一個以公開存取為前提命名的儲存桶裡留下一份,用的是可預測的命名規則。

然後是承諾與程式碼對不上的地方。repo 裡的隱私政策寫著「上傳進行轉換的 PDF 檔案會在轉換完成後刪除」。對照整份原始碼,找不到任何一段刪除 R2 物件的呼叫。上傳的程式碼在,下載結果的程式碼在,就是沒有刪除這一步。政策說了會做的事,程式裡不存在。同一份政策的第三方揭露也值得看一眼:它只寫「與為我們提供服務的供應商合作」,沒有點名 Mistral,也沒有說檔案會交給哪家公司的哪個服務;引擎身分要看到 FAQ 或原始碼才知道。

這裡要公平地說清楚邊界:網站已死,現在無法觀察線上版本實際部署的是哪一份程式碼,也無法確認 R2 桶子當時設成公開還是私有。能夠確定的是兩件事:這份公開出來的原始碼裡沒有刪除邏輯,以及隱私政策的承諾在這份程式碼裡沒有對應的實作。對會上傳合約、報價單這類文件的人,這就是該知道的事。

還有一個留給自己架的人的提醒。程式裡留著另一條沒走完的客戶端轉換路線,金鑰的環境變數名稱用了 NEXT_PUBLIC_ 開頭;這種前綴的金鑰會被打包進瀏覽器,任何打開開發者工具的人都看得到。好在那條路線是死碼,實際呼叫沒有被引用,真正拿去敲 Mistral 大門的金鑰放在伺服器端。但如果你要拿這份原始碼自架,這類殘骸值得先清一遍。

免費牆與價格的形狀:數字都寫在程式碼裡

收費結構倒是很透明,常數直接寫在程式碼裡,跟定價卡完全對得上:

方案檔案大小次數頁數宣稱價格
免費5MB每月 5 次100 頁0
訂閱30MB無限1,000 頁月繳 4.99 美元,年繳 49.9 美元
自己接 Mistral OCR依 API 限制依額度無此限每 1,000 頁 4 美元

計數方式也在程式碼裡:以帳號為單位記次,每月 1 號重置,而不是從你註冊那天起算一個月,月底註冊的人等於賺到一個完整的下個月。轉換必須登入:未登入時上傳欄位會直接跳登入視窗,對轉換介面的請求也會先被導向登入頁。註冊走電子郵件加密碼,密碼用 bcrypt 雜湊,註冊後還要點一封 24 小時內有效的驗證信。帳號資料表裡跟商業模式有關的欄位,除了訂閱狀態,就放著這個使用次數計數器,整個收費的骨架一目了然。

不過有兩個細節可以看出文案與程式的距離。FAQ 說付費版可以一次上傳多個檔案做批次轉換,但上傳欄位沒有 multiple 屬性,後端一次也只接一個檔案,批次這件事在程式碼裡不存在。定價卡標明免費版最多 100 頁、付費版 1,000 頁,程式碼裡同樣找不到頁數檢查,在頁數與檔案大小這兩個宣稱裡,真正擋人的只有檔案大小。中文語系檔裡還留著一組沒被介面採用的文案:免費版「有廣告」、高級版「無廣告」。對照靜態檔案區那份登記了 Google 廣告賣家編號的 ads.txt,看得出這個專案考慮過靠廣告變現的路線,最後收斂成純訂閱制,沒用到的文案與登記檔就留在原地。

授權、條款,和背後那個帳號

想拿原始碼自己架一套的人,第一件事要看授權,而這裡是空的。GitHub 把這個 repo 的授權狀態標成 None,倉庫裡沒有 LICENSE 檔。README 結尾確實寫了「許可證:MIT」,但那是一個沒有連結目標的空承諾,倉庫裡也沒有對應檔案。公開不等於授權,這份原始碼目前處於授權狀態未明確的狀態,拿去自架或改造,法律上的依據比看起來薄。

條款頁有幾個實際的點。服務條款寫明準據中華人民共和國法律;聯絡信箱是 [email protected];上傳的內容會授予站方非專屬的使用授權。隱私政策與條款的落款日期都是 2025 年 4 月 1 日,比 repo 第一筆 commit 還早一個多月,看起來是隨模版一起帶進來的文件。

背後的帳號也值得認識。ItusiAI 這個 GitHub 帳號目前有五個 repo,走的是同一種套路:Open-VoiceCanvas 是文字轉語音加 Stripe 訂閱,Open-Magiviz 是 AI 影片引擎,最近還在更新的是一套標榜給出海團隊用的 SaaS 啟動模版,2026 年 9 月仍有推送。PDF2MD 是這條產品線裡被放下的一個。另外幾個痕跡把它襯得更清楚:套件名稱就叫 my-v0-project,設定檔會去載入 v0-user-next.config.mjs,這是 v0(Vercel 的 AI 生成 App 工具)產出專案的標準指紋;程式裡還留著 force-fix-subscription-dates、reset-usage、test-stripe-webhook 這類除錯用的介面和頁面。一個急著上線的模版專案,該清的都沒清。

部署版的統計也值得記一筆。網站掛著 Google Analytics(編號 G-BK69JDJ3LJ),前端會在幾個動作上發事件:選了什麼類型的檔案、檔案多大、轉換落在幾秒的區間、有沒有下載結果,連轉換失敗的錯誤訊息都會整段送進統計。免費轉換的代價,除了次數限制,還有這一層行為紀錄。

自己接一條一樣的引擎,成本長什麼樣

既然引擎是 Mistral 的,繞過殼直接用引擎,就是這個故事裡最實用的部分。

Mistral 的 OCR API 定價是每 1,000 頁 4 美元,用的就是同一個模型 mistral-ocr-latest。反過來算帳:PDF2MD 年繳 49.9 美元換無限次轉換,以 API 成本計,站方大約在你一年轉滿 12,500 頁時才開始貼錢;低於這個量,每一頁都是毛利。對照免費帳號一個月 5 次的使用空間,這個價差結構就拉開了。Mistral 的免費方案每個月附帶 10 美元的 API 額度;就算保守一點,不把這筆額度算進 OCR 能不能抵用,量再上來時每 1,000 頁 4 美元的單價,也遠低於多數個人使用者的 PDF 轉換預算。

要自己架 PDF2MD 這整套(Next.js 加資料庫加帳號系統加 Stripe 收款),門檻不低,還有前面說的授權問題與一堆沒清的殘骸。但「自己用 Mistral OCR」不需要架網站:申請一組 API 金鑰,把 PDF 交給它,拿回 Markdown,這一段官方文件就有說明。適合的是偶爾要轉、或本來就會寫一點程式的人。

自己接要面對三件事。第一,金鑰保管:金鑰就是帳單的鑰匙,外流等於別人拿你的錢跑辨識,放環境變數、不進版本庫是底線。第二,計費直覺:按頁計費的花費要看著儀表板,一批幾百頁的文件掃過去,帳單才會有感覺;小量個人使用通常無感,但跟「無限次」三個字的心理帳不一樣。第三,資料其實一樣出站:換成自己接,PDF 內容照樣交給 Mistral,改變的是誰拿鑰匙、誰看得到使用紀錄,而不是辨識發生在哪裡。真正在意文件不出門的人,後面的離線路線才是答案;會計、法務這類不碰程式的角色,走現成工具更實際。

手上有 PDF 要轉,可以走的幾條路

站上先前的文章已經把幾種路線拆過,這裡按需求對號入座。

還不確定手上的 PDF 是原生文字還是掃描圖檔的,先看firecrawl-pdf-inspector:判斷 PDF 類型再決定要不要 OCR 的開源工具,它會逐頁告訴你哪些需要光學辨識,避免白白花 OCR 的錢。要命令列批次處理的人,nano-pdf-cli 走終端機路線,適合放進腳本裡跑。偏向網頁操作的人,可以看 SpeedPDFWebToPDF 這類線上工具的介紹,操作門檻最低。隱私優先、希望辨識發生在自己機器上的,RapidOCR 離線光學辨識把模型裝在本機,OCR Server 則把手機變成區網內的辨識端點,兩條都比把檔案交給雲端殼踏實。要跟 PDF 一問一答找資料的,ChatPDF 這類對話式工具是另一種思路。

判斷:誰還需要 PDF2MD

PDF2MD 本身,現在沒有需要它的理由。網站死了,開發者凍結了專案,它的價值只剩下這份原始碼當教材:一個用 v0 生成的介面、一套帳號與收款流程、一段向 Mistral 租引擎的中繼程式,加一份刪除承諾沒有實作的隱私政策。兩個 commit,收 49.9 美元一年,這門生意的一切都攤在陽光下。

真正留下來的用處有兩個。它示範了怎麼看穿這一類工具:打開依賴清單找 PDF 庫,找不到,引擎就是別人家的;對照隱私政策與程式碼,承諾的刪除存不存在;看文案承諾的功能,再回頭數一數有沒有對應的程式。這套檢查不用裝任何東西,幾分鐘就能對一個陌生工具做完。它也把替代方案襯托得很清楚:偶爾轉檔的人,用站內介紹過的現成工具就夠;每個月有穩定量、又在意成本的人,自己接 Mistral OCR,按頁付錢比包月彈性;手上是合約、報價單這類不方便出門的文件,走離線辨識,讓每一頁都留在自己機器上。哪一條,都比等一個掛著資料庫錯誤的網站回來實際。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 1242

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...