[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-ru-he-yong-python-zheng-he-mistral-ocr-zh":3,"article-related-ru-he-yong-python-zheng-he-mistral-ocr-zh":30,"series-tools-3d1c3a08-1490-4e9e-98ef-14079e3056d6":83},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":29},"3d1c3a08-1490-4e9e-98ef-14079e3056d6","ru-he-yong-python-zheng-he-mistral-ocr-zh","如何用 Python 串接 Mistral OCR","\u003Cp data-speakable=\"summary\">這篇教你用 Python 串接 \u003Ca href=\"\u002Fnews\u002Fmistral-cybersecurity-model-banks-europe-zh\">Mist\u003C\u002Fa>ral OCR，完成雲端 PDF、在地檔案與圖片掃描的文字擷取，並把結果保存成可再處理的結構化輸出。\u003C\u002Fp>\u003Cp>這篇給要把 PDF、掃描檔、收據照片轉成可用文字與版面的開發者看。你照著做完，會得到一組可直接執行的 Python 流程，能處理遠端 PDF、上傳本機檔案、保留 Markdown 結構，還能把圖片一併存下來。\u003C\u002Fp>\u003Cp>你也會完成 \u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa> 金鑰設定、驗證輸出結果，並建立一個可延伸到正式環境的 OCR 範例專案。整篇都是照做型步驟，適合第一次接 Mistral OCR 的人。\u003C\u002Fp>\u003Ch2>開始之前\u003C\u002Fh2>\u003Cul>\u003Cli>Python 3.9+\u003C\u002Fli>\u003Cli>pip 23+\u003C\u002Fli>\u003Cli>Mistral AI 帳號，先登入 \u003Ca href=\"https:\u002F\u002Fconsole.mistral.ai\u002F\">La Plateforme\u003C\u002Fa>\u003C\u002Fli>\u003Cli>Mistral API key\u003C\u002Fli>\u003Cli>可連網，因為這是雲端 OCR\u003C\u002Fli>\u003Cli>可測試的 PDF、JPG 或 PNG 檔案\u003C\u002Fli>\u003Cli>Git 版本控制工具，若你要保存範例專案\u003C\u002Fli>\u003C\u002Ful>\u003Cp>先把套件裝在獨立虛擬環境，避免和其他專案的依賴衝突。這樣你之後重跑 OCR 範例時，也比較容易重現相同結果。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1779001446578-9gfa.png\" alt=\"如何用 Python 串接 Mistral OCR\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Ch2>Step 1: 建立 Python 虛擬環境\u003C\u002Fh2>\u003Cp>目的：先做出乾淨的執行環境，讓 Mistral SDK 可以獨立安裝，不會被其他專案套件干擾。\u003C\u002Fp>\u003Cpre>\u003Ccode>python3 -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npip install --upgrade pip\npip install mistralai python-dotenv datauri\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：執行 \u003Ccode>python -c \"import mistra\u003Ca href=\"\u002Fnews\u002Fbitcoin-tops-80k-senate-advances-clarity-act-zh\">la\u003C\u002Fa>i; print('ok')\"\u003C\u002Fcode>，你應該看到 \u003Ccode>ok\u003C\u002Fcode>，代表 SDK 已經安裝成功。\u003C\u002Fp>\u003Ch2>Step 2: 儲存 API 金鑰\u003C\u002Fh2>\u003Cp>目的：把憑證放進環境變數，避免直接寫進程式碼或上傳到版本庫。Mistral OCR 需要先通過驗證，才可以處理文件。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1779001456365-xhog.png\" alt=\"如何用 Python 串接 Mistral OCR\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cpre>\u003Ccode>cat &gt; .env &lt;&lt;'EOF'\nMISTRAL_API_KEY=your_api_key_here\nEOF\n\ncat &gt; .gitignore &lt;&lt;'EOF'\n.env\n.venv\nEOF\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到 \u003Ccode>.env\u003C\u002Fcode> 與 \u003Ccode>.\u003Ca href=\"\u002Fnews\u002Fsifive-p570-gen3-rva23-platform-core-zh\">ve\u003C\u002Fa>nv\u003C\u002Fcode> 被 Git 忽略，且在 Mistral 控制台中可確認 API key 已啟用。\u003C\u002Fp>\u003Ch2>Step 3: 初始化 OCR 用戶端\u003C\u002Fh2>\u003Cp>目的：讀取環境變數並建立已驗證的客戶端物件，讓腳本具備呼叫 OCR 端點的能力。\u003C\u002Fp>\u003Cpre>\u003Ccode>from dotenv import load_dotenv\nfrom mistralai import Mistral\nimport os\n\nload_dotenv()\napi_key = os.environ[\"MISTRAL_API_KEY\"]\nclient = Mistral(api_key=api_key)\nprint(\"client-ready\")\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：執行後你應該看到 \u003Ccode>client-ready\u003C\u002Fcode>。如果沒有出現，先檢查 \u003Ccode>.env\u003C\u002Fcode> 是否真的有讀到金鑰。\u003C\u002Fp>\u003Ch2>Step 4: 擷取遠端 PDF 內容\u003C\u002Fh2>\u003Cp>目的：直接對公開 PDF 進行 OCR，快速確認整條流程是否正常，不必先處理檔案上傳。\u003C\u002Fp>\u003Cpre>\u003Ccode>ocr_response = client.ocr.process(\n    model=\"mistral-ocr-latest\",\n    document={\n        \"type\": \"document_url\",\n        \"document_url\": \"https:\u002F\u002Farxiv.org\u002Fpdf\u002F2501.00663\"\n    }\n)\n\nprint(len(ocr_response.pages))\nprint(ocr_response.pages[0].markdown[:800])\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到頁數大於 0，並且前幾段 Markdown 會包含標題、段落或圖表引用，而不是一整坨平面文字。\u003C\u002Fp>\u003Ch2>Step 5: 上傳本機檔案並保存圖片\u003C\u002Fh2>\u003Cp>目的：處理存在你電腦上的 PDF，並把文件中的圖片一併保留下來。這一步適合私人文件、內網文件或不能公開上傳的資料。\u003C\u002Fp>\u003Cpre>\u003Ccode>from datauri import parse\n\nuploaded = client.files.upload(\n    file={\"file_name\": \"report.pdf\", \"content\": open(\"report.pdf\", \"rb\")},\n    purpose=\"ocr\"\n)\nsigned_url = client.files.get_signed_url(file_id=uploaded.id)\n\nocr_response = client.ocr.process(\n    model=\"mistral-ocr-latest\",\n    document={\"type\": \"document_url\", \"document_url\": signed_url.url},\n    include_image_base64=True\n)\n\nfor page in ocr_response.pages:\n    for img in page.images:\n        data = parse(img.image_base64)\n        with open(img.id, \"wb\") as f:\n            f.write(data.data)\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到一或多個圖片檔寫入磁碟，例如 \u003Ccode>img-0.jpeg\u003C\u002Fcode>。同時 Markdown 仍保有內文與圖像位置，代表版面資訊有被保留。\u003C\u002Fp>\u003Ch2>Step 6: 測試掃描圖並檢查品質\u003C\u002Fh2>\u003Cp>目的：對掃描檔或手機拍照圖做 OCR，確認輸出是否保留標題、表格結構與可讀文字。這一步能幫你判斷哪些文件可直接自動化，哪些還需要清理規則。\u003C\u002Fp>\u003Cpre>\u003Ccode>ocr_response = client.ocr.process(\n    model=\"mistral-ocr-latest\",\n    document={\n        \"type\": \"image_url\",\n        \"image_url\": \"https:\u002F\u002Fexample.com\u002Freceipt.png\"\n    }\n)\n\nprint(ocr_response.pages[0].markdown)\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到與畫面內容相符的文字，而不是只有零碎字元。若是發票或收據，品項與總金額應該仍然可讀，足以交給後續解析流程。\u003C\u002Fp>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>指標\u003C\u002Fth>\u003Cth>基準／優化前\u003C\u002Fth>\u003Cth>結果／優化後\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>多樣文件準確率\u003C\u002Ftd>\u003Ctd>83.4%，使用 Google Document AI\u003C\u002Ftd>\u003Ctd>約 94.9%，使用 Mistral OCR\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>多樣文件準確率\u003C\u002Ftd>\u003Ctd>89.5%，使用 Azure OCR\u003C\u002Ftd>\u003Ctd>約 94.9%，使用 Mistral OCR\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>吞吐量\u003C\u002Ftd>\u003Ctd>一般單檔人工處理\u003C\u002Ftd>\u003Ctd>單一 GPU 節點最高每分鐘 2,000 頁\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>價格\u003C\u002Ftd>\u003Ctd>團隊人工複核成本浮動\u003C\u002Ftd>\u003Ctd>約每 1,000 頁 1 美元，約每頁 0.001 美元\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>請求限制\u003C\u002Ftd>\u003Ctd>臨時檔案處理\u003C\u002Ftd>\u003Ctd>單次請求最高 50 MB 或 1,000 頁\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Ch2>常見錯誤\u003C\u002Fh2>\u003Cul>\u003Cli>API key 遺失或過期。修法：重新檢查 \u003Ccode>.env\u003C\u002Fcode> 裡的 \u003Ccode>MISTRAL_API_KEY\u003C\u002Fcode>，必要時到控制台重新產生金鑰。\u003C\u002Fli>\u003Cli>把本機路徑直接丟進 \u003Ccode>document_url\u003C\u002Fcode>。修法：先上傳檔案，再使用 \u003Ccode>client.files.get_signed_url()\u003C\u002Fcode> 回傳的連結。\u003C\u002Fli>\u003Cli>以為 OCR 只會回傳純文字。修法：改成讀取 Markdown 結構與圖片引用，再決定要不要保留標題、表格與圖示。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>接下來可以看什麼\u003C\u002Fh2>\u003Cp>當基本 OCR 流程跑通後，下一步可以加入分段切塊、表格欄位抽取與驗證規則，讓文件輸出變成可搜尋知識、可解析發票欄位，或可供檢索的內容。若你要做更大的文件管線，可以再接向量資料庫、Markdown 表格解析器與低信心頁面的人工複核流程。\u003C\u002Fp>","這篇教你用 Python 串接 Mistral OCR，完成雲端 PDF、在地檔案與圖片掃描的文字擷取，並把結果保存成可再處理的結構化輸出。","cohorte.co","https:\u002F\u002Fcohorte.co\u002Fblog\u002Fmistral-ocr-a-deep-dive-into-next-generation-document-understanding",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1779001446578-9gfa.png","tools","zh","b70f16f2-9ed6-4820-8cb6-6b52bca1e7df",[17,18,19,20,21],"Mistral OCR","Python","PDF OCR","Markdown","API 金鑰",[23,24,25],"先用虛擬環境與 .env 建立可重現的 Python OCR 專案。","可用遠端 PDF、上傳檔案與圖片掃描三種方式驗證 Mistral OCR。","輸出不只文字，還包含 Markdown 結構與圖片資訊，適合後續自動化處理。",12,"2026-05-17T07:03:37.885677+00:00","2026-05-17T07:03:37.875+00:00","c3c88dd2-a940-438a-b359-0e5a24562273",{"tags":31,"relatedLang":42,"relatedPosts":46},[32,34,36,38,40],{"name":18,"slug":33},"python",{"name":17,"slug":35},"mistral-ocr",{"name":19,"slug":37},"pdf-ocr",{"name":21,"slug":39},"api-金鑰",{"name":20,"slug":41},"markdown",{"id":15,"slug":43,"title":44,"language":45},"how-to-use-mistral-ocr-with-python-en","How to Use Mistral OCR with Python","en",[47,53,59,65,71,77],{"id":48,"slug":49,"title":50,"cover_image":51,"image_url":51,"created_at":52,"category":13},"1a92ac0a-75ea-4877-874d-4a309cd0085b","nvidia-research-gpu-template-zh","NVIDIA 研究頁把 GPU 資源變模板","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780567412863-e8oq.png","2026-06-04T10:02:58.043845+00:00",{"id":54,"slug":55,"title":56,"cover_image":57,"image_url":57,"created_at":58,"category":13},"3ead09ec-5656-4165-9bb0-f602add3c409","qdrant-filter-first-rag-design-decoded-zh","Qdrant 讓 RAG 先過濾再找相似","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780566519640-bdds.png","2026-06-04T09:47:59.450347+00:00",{"id":60,"slug":61,"title":62,"cover_image":63,"image_url":63,"created_at":64,"category":13},"7b5e6965-307e-4492-bf65-d922cd7818ad","anthropic-code-review-tool-ai-generated-code-zh","Anthropic 讓 AI 程式變可審","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780563813320-5wc7.png","2026-06-04T09:02:56.999212+00:00",{"id":66,"slug":67,"title":68,"cover_image":69,"image_url":69,"created_at":70,"category":13},"bef47dbc-b0b4-439e-bae9-abe9473a321c","wei-shen-me-tether-ba-ben-di-ai-ji-yi-tui-jin-ri-chang-zhuan-zh","為什麼 Tether 把本地 AI 記憶推進日常裝置是對的","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780542170805-opi6.png","2026-06-04T03:02:19.599329+00:00",{"id":72,"slug":73,"title":74,"cover_image":75,"image_url":75,"created_at":76,"category":13},"d3ec03a8-a805-4a21-9826-72a74a72b625","databricks-model-serving-llm-deploy-guide-zh","Databricks Model Serving 讓 LLM 部署變簡單","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780525998117-7ur8.png","2026-06-03T22:32:51.005996+00:00",{"id":78,"slug":79,"title":80,"cover_image":81,"image_url":81,"created_at":82,"category":13},"4dd225a8-bf6c-4768-a486-a27956c7033d","opencode-digitalocean-model-freedom-zh","OpenCode+DigitalOcean 讓你切換模型","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780525116428-1q7g.png","2026-06-03T22:18:06.969758+00:00",[84,89,94,99,104,109,114,119,124,129],{"id":85,"slug":86,"title":87,"created_at":88},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":90,"slug":91,"title":92,"created_at":93},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":95,"slug":96,"title":97,"created_at":98},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":100,"slug":101,"title":102,"created_at":103},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":105,"slug":106,"title":107,"created_at":108},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":110,"slug":111,"title":112,"created_at":113},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":115,"slug":116,"title":117,"created_at":118},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":120,"slug":121,"title":122,"created_at":123},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":125,"slug":126,"title":127,"created_at":128},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":130,"slug":131,"title":132,"created_at":133},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]