[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-how-to-use-mistral-ocr-with-python-en":3,"article-related-how-to-use-mistral-ocr-with-python-en":38,"series-tools-b70f16f2-9ed6-4820-8cb6-6b52bca1e7df":91},{"id":4,"title":5,"content":6,"summary":7,"source":8,"source_url":9,"author":10,"image_url":11,"keywords":12,"language":19,"translated_content":10,"views":20,"is_premium":21,"created_at":22,"updated_at":22,"cover_image":11,"published_at":23,"rewrite_status":24,"rewrite_error":10,"rewritten_from_id":25,"slug":26,"category":27,"related_article_id":28,"status":29,"google_indexed_at":30,"x_posted_at":10,"tweet_text":10,"title_rewritten_at":10,"title_original":10,"key_takeaways":31,"topic_cluster_id":35,"embedding":36,"is_canonical_seed":37},"b70f16f2-9ed6-4820-8cb6-6b52bca1e7df","How to Use Mistral OCR with Python","\u003Cp data-speakable=\"summary\">Use Mistral OCR to extract structured text, images, and tables from PDFs and scans.\u003C\u002Fp>\u003Cp>This guide is for developers who want to turn PDFs, scans, and document images into structured output with Mistral OCR. After following the steps, you will have a working Python setup that can OCR a remote PDF, upload a local file, preserve layout in Markdown, and save embedded images for downstream parsing.\u003C\u002Fp>\u003Cp>You will also know how to verify the output, estimate cost per page, and avoid the most common integration mistakes when moving from a demo to a production workflow.\u003C\u002Fp>\u003Ch2>Before you start\u003C\u002Fh2>\u003Cul>\u003Cli>Python 3.9+\u003C\u002Fli>\u003Cli>pip 23+\u003C\u002Fli>\u003Cli>A Mistral AI account on \u003Ca href=\"https:\u002F\u002Fconsole.mistral.ai\u002F\">La Plateforme\u003C\u002Fa>\u003C\u002Fli>\u003Cli>A Mistral API key\u003C\u002Fli>\u003Cli>Internet access for hosted OCR requests\u003C\u002Fli>\u003Cli>Optional: a local PDF or JPG\u002FPNG scan for testing\u003C\u002Fli>\u003Cli>Optional: Git installed if you plan to commit a .env file and sample script\u003C\u002Fli>\u003C\u002Ful>\u003Cp>Install the official SDK and helper packages in a clean virtual environment so your OCR test runs do not conflict with other projects.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1779001433935-7zb3.png\" alt=\"How to Use Mistral OCR with Python\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Ch2>Step 1: Create a Python environment\u003C\u002Fh2>\u003Cp>Goal: build a clean runtime that can install the Mistral SDK without dependency conflicts. A virtual environment also makes it easy to reproduce the OCR setup later on another machine.\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>Verification: run \u003Ccode>python -c \"import mistralai; print('ok')\"\u003C\u002Fcode>. You should see \u003Ccode>ok\u003C\u002Fcode>, which confirms the SDK is installed and importable.\u003C\u002Fp>\u003Ch2>Step 2: Store your API key securely\u003C\u002Fh2>\u003Cp>Goal: create a credential flow that keeps your key out of source code. Mistral OCR is accessed through the hosted \u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa>, so the client must authenticate before any document can be processed.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1779001434016-s6uf.png\" alt=\"How to Use Mistral OCR with Python\" 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>Verification: open the \u003Ca href=\"https:\u002F\u002Fdocs.mistral.ai\u002F\">Mistral docs\u003C\u002Fa> and confirm your API key is active in the console. You should also see \u003Ccode>.env\u003C\u002Fcode> excluded from Git status.\u003C\u002Fp>\u003Ch2>Step 3: Initialize the OCR client\u003C\u002Fh2>\u003Cp>Goal: load the API key from the environment and create an authenticated client object. This is the point where your script becomes ready to call the OCR endpoint.\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>Verification: run the script and look for \u003Ccode>client-ready\u003C\u002Fcode>. If the environment variable is missing, you should fix the \u003Ccode>.env\u003C\u002Fcode> file before moving on.\u003C\u002Fp>\u003Ch2>Step 4: OCR a remote PDF\u003C\u002Fh2>\u003Cp>Goal: extract structured Markdown from a public PDF URL. This is the fastest way to confirm that Mistral OCR is working end to end, because you do not need to upload a file first.\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>Verification: you should see a page count greater than zero and Markdown that starts with headings, paragraphs, or figure references. If the source PDF has multiple sections, those should appear in the extracted text rather than as one flat block.\u003C\u002Fp>\u003Ch2>Step 5: Upload a local file and save images\u003C\u002Fh2>\u003Cp>Goal: process a PDF that lives on your machine and preserve embedded figures. This step is important when your documents are private, not publicly hosted, or need to be handled from a local workflow.\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>Verification: you should see one or more image files saved to disk, such as \u003Ccode>img-0.jpeg\u003C\u002Fcode>. The Markdown output should still include the surrounding text and image references, which confirms layout preservation.\u003C\u002Fp>\u003Ch2>Step 6: Parse image scans and compare output quality\u003C\u002Fh2>\u003Cp>Goal: run OCR on a scan or phone photo and check whether the result keeps headings, table structure, and readable text. This step helps you understand where OCR quality is strong enough for automation and where you may need cleanup logic.\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>Verification: you should see text output that matches the visible document, not just a raw character dump. On invoices or receipts, line items and totals should remain readable enough to feed into a parser or extraction pipeline.\u003C\u002Fp>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Metric\u003C\u002Fth>\u003Cth>Before\u002FBaseline\u003C\u002Fth>\u003Cth>After\u002FResult\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>Accuracy across diverse documents\u003C\u002Ftd>\u003Ctd>83.4% with Google Document AI\u003C\u002Ftd>\u003Ctd>~94.9% with Mistral OCR\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Accuracy across diverse documents\u003C\u002Ftd>\u003Ctd>89.5% with Azure OCR\u003C\u002Ftd>\u003Ctd>~94.9% with Mistral OCR\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Throughput\u003C\u002Ftd>\u003Ctd>Typical single-document manual handling\u003C\u002Ftd>\u003Ctd>Up to 2,000 pages per minute on a single GPU node\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Pricing\u003C\u002Ftd>\u003Ctd>Manual review cost varies by team\u003C\u002Ftd>\u003Ctd>About $1 per 1,000 pages, or $0.001 per page\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Request limits\u003C\u002Ftd>\u003Ctd>Ad hoc file handling\u003C\u002Ftd>\u003Ctd>Up to 50 MB or 1,000 pages per request\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Ch2>Common mistakes\u003C\u002Fh2>\u003Cul>\u003Cli>Using a missing or expired API key. Fix: recheck \u003Ccode>MISTRAL_API_KEY\u003C\u002Fcode> in \u003Ccode>.env\u003C\u002Fcode> and regenerate the key in the Mistral console if needed.\u003C\u002Fli>\u003Cli>Passing a local file path directly to \u003Ccode>document_url\u003C\u002Fcode>. Fix: upload the file first, then use the signed URL returned by \u003Ccode>client.files.get_signed_url()\u003C\u002Fcode>.\u003C\u002Fli>\u003Cli>Expecting OCR output to be plain text only. Fix: read the Markdown structure and image references, then decide whether to keep headings, tables, and figures in your downstream pipeline.\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>What's next\u003C\u002Fh2>\u003Cp>Once the basic OCR flow works, the next step is to add chunking, table extraction, and validation rules so your application can turn OCR output into searchable knowledge, invoice fields, or retrieval-ready content. If you are building a larger document pipeline, pair this guide with a vector store, a parser for Markdown tables, and a review step for low-confidence pages.\u003C\u002Fp>","Use Mistral OCR to extract structured text, images, and tables from PDFs and scans.","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-1779001433935-7zb3.png",[13,14,15,16,17,18],"Mistral OCR","Python","OCR","Markdown","API key","document processing","en",0,false,"2026-05-17T07:03:38.578001+00:00","2026-05-17T07:03:38.569+00:00","done","a2f71617-167b-4a6e-86d8-e5e4aea20e8e","how-to-use-mistral-ocr-with-python-en","tools","3d1c3a08-1490-4e9e-98ef-14079e3056d6","published","2026-05-17T09:00:13.965+00:00",[32,33,34],"Set up Mistral OCR in Python with the official SDK and a secure API key.","Process both remote PDFs and local files while preserving layout and embedded images.","Use structured Markdown output as the basis for downstream parsing, search, or RAG.","67452e13-3185-407a-983e-46571c7e3681","[-0.0021332724,-0.011091463,0.005368439,-0.07113853,-0.0077485307,-0.01435931,-0.0110988645,0.0006102337,2.2575843e-05,-0.0020855512,-0.023331018,-0.033298023,0.0070777265,0.007395041,0.1427511,-0.013661182,-0.013730025,0.009741001,-0.0031085135,-0.004187914,-0.021773105,0.022768015,0.025777688,-0.0019532628,-0.00072974776,-0.014225802,0.027172446,0.019600332,0.02643908,-0.0012278621,8.59811e-05,-0.009677726,0.01491547,0.0024726253,0.011672184,-0.0012938516,0.0026064115,-0.009753005,0.00021154818,0.018973416,-0.0332881,-0.008635057,-0.008141991,0.011685957,-0.017852813,-0.0138037875,-0.0037552083,0.0035748444,-0.007116567,0.00041109647,-0.019655384,0.0060658986,-0.029712832,-0.16713874,0.013661264,0.01313852,0.01639969,0.022281064,0.03064304,-0.013724429,-0.0069436724,0.033154834,0.01730068,-0.0053164754,-0.0023498626,-0.039243218,0.02518814,0.025330374,-0.008263828,0.006659933,0.0041607292,0.012359458,-0.0065281503,-0.017669633,-0.010793465,-0.035069056,0.016490135,-0.018100874,0.017870089,0.013256835,-0.007863505,-0.010405282,0.01720937,-0.0241639,0.032470904,0.016295461,-0.025291989,-0.016448084,0.0070107705,0.00030530503,-0.010410945,0.0057887314,0.0410198,-0.0016551209,-0.019618563,-0.026625142,0.007994956,0.0038716535,-0.00036172994,-0.015288385,-0.012136192,-0.024685532,-0.03666706,-0.016176887,0.0028865188,-0.042293698,0.028221238,0.025040494,0.0032464652,0.0044843922,-0.0016010163,-0.029754767,0.0024481018,0.0193717,0.04380918,-0.09702499,0.007545749,-0.01190184,0.016389564,-0.0068976195,-0.011763118,-0.023056723,0.014848691,0.009505283,-0.013033333,0.027183164,-0.0048081134,0.012198178,-0.02670762,0.00585835,0.0152261285,-0.019488465,-0.023876477,0.0037807992,0.015361306,-0.013675642,-0.019541152,0.008287258,-0.009423032,-0.014946661,-0.0075764065,0.052237332,-0.0032460808,-0.027971443,0.01826319,-0.015739428,-0.013675048,0.02810688,-0.018365256,-0.054706074,0.03259498,0.003138834,-0.0069460724,-0.020736003,0.0046024392,-0.025262201,-0.014354081,-0.029408386,0.015923914,-0.005037884,-0.007748206,-0.023446037,0.0032872707,-0.011962599,-0.011444789,0.024652183,0.021103656,0.02756764,0.0050815376,0.0071063107,0.00949768,-0.0018831925,0.02923883,0.026562173,0.005083306,-0.011702589,-0.002797062,-0.017512886,0.021090241,-0.01682246,0.017574856,-0.014638394,-0.025117898,0.039535902,-0.010087873,-0.0009710363,0.009633912,-0.007845348,-0.02217153,-0.029556205,0.007329332,0.017209804,0.012829152,-0.02241575,0.009311314,-0.023091229,-0.006463956,-0.032073133,-0.0012879501,0.011430957,0.012633207,-0.05008844,0.02068988,0.00042395183,0.031122878,-0.010193699,-0.0052734786,-0.025630035,0.00093050016,-0.0063895625,0.0038511371,-0.015362346,0.017638303,-0.0135716535,-0.0053177867,-0.010990477,0.011101539,-0.025260232,0.0021521281,-0.027716555,-0.016363764,-0.0024217996,0.021273872,0.018847361,-0.0251121,-0.026847586,-0.02931401,-0.010332647,0.019234193,0.012942019,0.018497903,0.012754972,0.014325567,0.008249823,-0.005377381,0.00361726,0.0083346665,-0.004504141,0.0057191183,0.012219404,-0.0013338315,0.020698356,-0.005496622,0.014679797,0.0011310152,0.0061162887,0.0040411204,-0.008493976,0.0018601498,-0.009467135,-0.01576014,0.027238578,0.008485563,-0.022492355,0.014976994,-0.0050146845,-0.014994861,-0.0049598436,-0.024973,0.0150840655,0.009275198,-0.0120331,-0.007360396,0.001339138,0.004311226,-0.0016142314,0.020679723,-0.011860427,-0.0041477974,0.016083555,0.019899877,0.021330576,0.0035937906,0.009207001,0.010038033,0.024235478,-0.07424304,0.01630867,0.0061413785,-0.010056269,-0.003106299,0.018683327,-0.026523637,0.0023384606,-0.0017377535,0.03778221,-4.3099535e-05,-0.021952642,0.05100503,0.006003425,0.0030154039,-0.0092565045,-0.010991598,-0.03146888,0.029580968,-0.037435725,0.0011212449,0.0013786525,-0.010114273,0.0006535771,0.011961417,-0.0298285,0.0006318561,0.050227866,0.010031826,0.0059743393,-0.017693626,0.01842599,-0.02318775,-0.00021637752,-0.005001934,-0.014492235,-0.011564458,-0.022170689,-0.0006832079,0.0060701948,0.0101916455,-0.010754036,0.011633411,0.014441178,0.011069618,0.0075675147,0.012213182,-0.001066394,-0.012736192,-0.022783043,-0.015250975,0.046814963,0.018448355,-0.01790895,-0.0027774246,-0.016626252,0.014445453,-0.031986512,-0.009892834,0.012414744,-0.02040866,-0.028082151,0.006683709,-0.00037619716,-0.03922413,-0.023967221,-0.0107503785,-0.030448608,-0.035881493,-0.017158914,0.00427288,-0.007333801,-0.027706042,-0.015904171,0.015372411,-0.009376829,-0.00325257,-0.017823383,-0.004396197,0.0085662315,-0.0072550117,-0.0007659095,0.0012163953,0.021956865,-0.02486787,0.034666207,-0.004777685,0.003848588,-0.010694363,-0.008823831,0.012024004,0.01962895,-0.020103654,-0.0008194979,-0.0066005536,1.5113027e-05,0.01048763,-0.011450428,-0.02987009,-0.01072492,-0.011092119,0.013936731,-0.03862859,-0.0029307972,-0.01169379,-0.007784335,-0.0019812004,-0.03846646,-0.025841588,-0.025568446,0.01676259,-0.017423913,0.010809583,0.014257752,-0.02644118,0.007845442,-0.009743027,0.010004291,0.0071150865,-0.0024727692,-0.018957736,0.029939514,0.0014299284,0.013783248,0.004355535,0.0017773813,-0.052109826,-0.009659377,0.01346709,0.0055802343,-0.04169275,-0.012613677,0.0004188247,-0.031345,-0.014128883,0.005400313,0.03715947,0.009215093,0.033557393,0.03526788,-0.019053614,-0.00011390127,0.010383547,-0.0075858906,-0.028059682,0.022711283,-0.008362795,0.005346008,0.0008786751,-0.019781746,-0.043379247,0.001984561,-0.0053586974,-0.013788066,0.009219666,-0.026830586,-0.0227233,-0.0100371055,-0.0018777209,-0.03057966,-0.016658483,0.011382158,0.0039001396,-0.020812914,-0.007474417,-0.010515724,8.561141e-05,-0.010079592,0.019978452,-0.0035750521,0.0037069134,-0.001114502,-0.016088434,-0.009215366,0.0033469796,0.013526879,-0.01232799,-0.0037256845,-0.011398144,-0.01929043,0.011564924,-0.009019906,0.010011072,-0.023334263,-0.010929809,0.03483909,0.0021542287,0.0031651487,-0.003210357,-0.02587324,-0.007110064,-0.0052931905,-0.007707842,0.003077804,-0.0007751402,0.027270066,-0.0025562637,-0.034714475,-0.009766333,0.011378732,-0.010048335,-0.028130911,0.008718856,-0.004771538,0.011185834,-0.012569853,0.005234603,-0.029990286,0.021007566,-0.007969833,-0.0039923163,-0.0076323943,0.017197626,0.017461283,0.023755006,0.02095196,-0.0142132165,0.0062712687,-0.010860029,-0.026037045,-0.0052318117,-0.0005341776,0.0011295202,0.02632961,-0.0036795444,0.006823044,0.0076798094,-0.014127281,-0.031569686,-0.01587577,0.017522803,-0.003946026,0.021906089,-0.00080127444,-0.0325408,-0.017345214,0.0023151238,0.02453699,-0.019739121,-0.0041552773,0.008844901,-0.004325533,-0.0019690928,0.0031045238,-0.005241961,0.011664204,0.009325213,0.018692661,-0.015694883,-0.007013563,0.0060698423,0.025097378,-0.009894761,-0.0054159914,-0.012943747,0.013170169,0.0052527594,-0.009207001,-0.015376187,0.028760374,0.018247845,-0.0069629205,0.019620417,0.014888236,-0.033469558,-0.0123242885,-0.011278082,0.029725026,0.020710055,-0.10786091,0.019251399,-0.024549523,0.00864345,-0.002459563,-0.025848985,-0.0011781853,-0.0016475922,-0.03264719,0.0051530423,-0.00032082188,0.0046995697,0.024495553,0.0066794674,0.0036634773,-0.0047383825,-0.006832918,-0.018568886,0.03294666,-0.0085151335,0.026637932,0.040887456,0.024113702,0.022143662,-0.039819464,0.019082043,0.024282726,0.042675734,0.0187074,0.016617185,-0.018776763,-0.0031797455,-0.014115279,0.00023458814,0.012594916,-0.0024180326,-0.017869355,-0.010065908,0.008727202,0.0072166477,-0.028787233,-0.016312335,-0.022243662,0.0054432624,-0.022245426,-0.019629529,0.011469371,-0.04693,-0.004740716,0.012138299,-0.0005015635,-0.02175409,0.018517122,0.008050435,-0.0048870626,-0.019753575,-0.044020746,0.021450624,-0.0038457315,0.022375375,0.031969428,0.0112366425,0.0005240021,0.030812548,-0.00027029027,0.022471994,0.01474866,0.029743502,-0.011829198,-0.012745538,-0.02618455,0.00066267676,0.0064284233,0.03983917,0.0114349285,0.000861173,-0.0053914557,0.015793217,0.0006212798,0.007219221,-0.043019876,-0.02341058,-0.07802435,-0.03353052,-0.011173655,0.0043030432,-0.0033967155,0.0056154886,0.0021713474,-0.0020829854,0.008892924,-0.010567408,0.0059696306,-0.004910726,0.005028158,-0.019866629,0.0011967482,0.0005170105,0.0009983846,0.0014371779,-0.011541648,-0.008713112,-0.014113733,0.008573631,0.026662316,0.011396329,0.007937031,0.031034745,0.019339835,-0.018085651,0.006383216,-0.03412691,0.011327116,-0.15089966,0.007418506,0.020572288,0.0028367818,0.0117345955,0.019649452,0.0121142715,0.010545321,-0.004735649,-0.045363203,-0.006316281,-0.015407721,0.0018644497,-0.018129585,0.0086560175,0.11168101,-0.0064950613,0.0006804588,0.0060160668,-0.0032642307,0.0011681286,-0.031935833,-0.003076003,0.005017834,0.0016339963,0.011893083,0.015279127,0.024916911,-0.007224596,0.00028783883,0.0014501961,-0.014354673,-0.017487254,0.0066241156,0.008565501,0.02174727,0.024938982,-0.006150376,-0.018266685,0.015902607,-0.011668049,-0.0072174687,0.0026612475,0.026357941,0.010975424,-0.0077662137,-0.016727198,0.01047316,-0.0040892963,-0.02666292,-0.0035998926,-0.045095738,0.0147665925,0.013501813,-0.03521523,-0.01108731,-0.014098326,0.010698225,0.022834042,-0.0043276907,-0.016222596,0.0217442,0.00260944,0.021716313,0.014300995,0.016105587,0.0033813452,0.00551424,0.0010520861,0.013512926,0.0048530465,-0.003101062,-0.01825351,0.004080493,-0.011289089,-0.016762476,-0.011207459,0.0040488797,0.018685844,-0.005473145,0.020836158,0.003180576,-0.021891462,0.0025473356,0.003501791,-0.012348367,-0.0087073995,-0.013410544,0.00083264254,0.0041012294,0.0027219579,0.015180468,0.0017414822,0.035065085,0.0003770734,-0.004442282,-0.0073177153,0.0037545583,0.02892867,-0.017240778,-0.02336562,-0.006466632,0.0071620313,-0.05137738,-0.0039500804,-0.01788393,-0.010119506,0.003596808,0.009741395,0.00985557]",true,{"tags":39,"relatedLang":50,"relatedPosts":54},[40,42,44,46,48],{"name":17,"slug":41},"api-key",{"name":14,"slug":43},"python",{"name":13,"slug":45},"mistral-ocr",{"name":16,"slug":47},"markdown",{"name":15,"slug":49},"ocr",{"id":28,"slug":51,"title":52,"language":53},"ru-he-yong-python-zheng-he-mistral-ocr-zh","如何用 Python 串接 Mistral OCR","zh",[55,61,67,73,79,85],{"id":56,"slug":57,"title":58,"cover_image":59,"image_url":59,"created_at":60,"category":27},"0fb88e53-4751-497b-90bf-6cf8e226de72","how-to-build-rust-gpu-kernels-with-cuda-oxide-en","How to Build Rust GPU Kernels with cuda-oxide","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778976835301-1mjh.png","2026-05-17T00:13:33.735275+00:00",{"id":62,"slug":63,"title":64,"cover_image":65,"image_url":65,"created_at":66,"category":27},"92dfddab-f461-42ad-a8e2-ec8016195a70","vector-databases-aws-explained-en","Vector Databases: How AWS Explains Them","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778973843388-2sgr.png","2026-05-16T23:23:37.624535+00:00",{"id":68,"slug":69,"title":70,"cover_image":71,"image_url":71,"created_at":72,"category":27},"3273659b-565b-424a-93b2-dad4665c3d24","how-to-choose-a-vector-database-in-2026-en","How to Choose a Vector Database in 2026","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778972631041-fqct.png","2026-05-16T23:03:30.964457+00:00",{"id":74,"slug":75,"title":76,"cover_image":77,"image_url":77,"created_at":78,"category":27},"93bb7b5a-144a-4887-8dde-625a400a0432","vibe-research-ai-tools-workflows-en","Vibe Research: AI Tools for Faster Research","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778904660748-0h9g.png","2026-05-16T04:10:34.448166+00:00",{"id":80,"slug":81,"title":82,"cover_image":83,"image_url":83,"created_at":84,"category":27},"133d5c6f-0ca1-4de3-89e8-7b741a61d254","aws-repository-wide-security-scanner-matters-en","Why AWS’s repository-wide security scanner matters more than faster S…","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778901047728-2rsn.png","2026-05-16T03:10:26.609967+00:00",{"id":86,"slug":87,"title":88,"cover_image":89,"image_url":89,"created_at":90,"category":27},"a1b85ac6-1e10-43e4-9b05-efc52d8dacdf","why-docker-microvm-sandboxes-ai-agents-en","Why Docker’s microVM sandboxes are the right move for AI agents","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778893843932-nvsk.png","2026-05-16T01:10:22.041947+00:00",[92,97,102,107,112,117,122,127,132,137],{"id":93,"slug":94,"title":95,"created_at":96},"8008f1a9-7a00-4bad-88c9-3eedc9c6b4b1","surepath-ai-mcp-policy-controls-en","SurePath AI's New MCP Policy Controls Enhance AI Security","2026-03-26T01:26:52.222015+00:00",{"id":98,"slug":99,"title":100,"created_at":101},"27e39a8f-b65d-4f7b-a875-859e2b210156","mcp-standard-ai-tools-2026-en","MCP Standard in 2026: Integrating AI Tools","2026-03-26T01:27:43.127519+00:00",{"id":103,"slug":104,"title":105,"created_at":106},"165f9a19-c92d-46ba-b3f0-7125f662921d","rag-2026-transforming-enterprise-ai-en","How RAG in 2026 is Transforming Enterprise AI","2026-03-26T01:28:11.485236+00:00",{"id":108,"slug":109,"title":110,"created_at":111},"6a2a8e6e-b956-49d8-be12-cc47bdc132b2","mastering-ai-prompts-2026-guide-en","Mastering AI Prompts: A 2026 Guide for Developers","2026-03-26T01:29:07.835148+00:00",{"id":113,"slug":114,"title":115,"created_at":116},"d6653030-ee6d-4043-898d-d2de0388545b","evolving-world-prompt-engineering-en","The Evolving World of Prompt Engineering","2026-03-26T01:29:42.061205+00:00",{"id":118,"slug":119,"title":120,"created_at":121},"3ab2c67e-4664-4c67-a013-687a2f605814","garry-tan-open-sources-claude-code-toolkit-en","Garry Tan Open-Sources a Claude Code Toolkit","2026-03-26T08:26:20.245934+00:00",{"id":123,"slug":124,"title":125,"created_at":126},"66a7cbf8-7e76-41d4-9bbf-eaca9761bf69","github-ai-projects-to-watch-in-2026-en","20 GitHub AI Projects to Watch in 2026","2026-03-26T08:28:09.752027+00:00",{"id":128,"slug":129,"title":130,"created_at":131},"231306b3-1594-45b2-af81-bb80e41182f2","claude-code-vs-cursor-2026-en","Claude Code vs Cursor in 2026","2026-03-26T13:27:14.177468+00:00",{"id":133,"slug":134,"title":135,"created_at":136},"9f332fda-eace-448a-a292-2283951eee71","practical-github-guide-learning-ml-2026-en","A Practical GitHub Guide to Learning ML in 2026","2026-03-27T01:16:50.125678+00:00",{"id":138,"slug":139,"title":140,"created_at":141},"1b1f637d-0f4d-42bd-974b-07b53829144d","aiml-2026-student-ai-ml-lab-repo-review-en","AIML-2026 Is a Bare-Bones Student Lab Repo","2026-03-27T01:21:51.661231+00:00"]