{"id":2481,"date":"2026-06-13T09:00:00","date_gmt":"2026-06-13T09:00:00","guid":{"rendered":"https:\/\/wiro.ai\/blog\/?p=2481"},"modified":"2026-06-03T00:58:57","modified_gmt":"2026-06-03T00:58:57","slug":"moondream3-query-vs-easy-ocr-5-screenshot-ocr-tests","status":"publish","type":"post","link":"https:\/\/wiro.ai\/blog\/moondream3-query-vs-easy-ocr-5-screenshot-ocr-tests\/","title":{"rendered":"Moondream3 Query vs Easy OCR: 5 Screenshot OCR Tests"},"content":{"rendered":"<p>Moondream3 Query vs Easy OCR becomes practical when screenshot OCR tests care about small UI text, extraction speed, and layout consistency.<\/p>\n<h2>Moondream3 Query vs Easy OCR: what stands out<\/h2>\n<h2>Models<\/h2>\n<ul>\n<li><a href=\"https:\/\/wiro.ai\/models\/wiro\/easy-ocr\">wiro\/easy-ocr<\/a><\/li>\n<li><a href=\"https:\/\/wiro.ai\/models\/moondream3-preview\/query\">moondream3-preview\/query<\/a><\/li>\n<\/ul>\n<h2>Test rules<\/h2>\n<ul>\n<li>Same 5 input images for both models<\/li>\n<li>English text<\/li>\n<li>Outputs shown as-is (no cleanup)<\/li>\n<li>Moondream prompt: Extract all text exactly as written. Preserve line breaks. Output plain text only. Do not add commentary.<\/li>\n<\/ul>\n<h2>Quick comparison<\/h2>\n<table>\n<thead>\n<tr>\n<th>Model<\/th>\n<th>Output style<\/th>\n<th>What worked best in these tests<\/th>\n<th>Common failure mode<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Easy OCR<\/td>\n<td>Token list \/ flat text<\/td>\n<td>Printed docs with clear spacing (invoice lines, menus)<\/td>\n<td>Digits split and UI chrome noise<\/td>\n<\/tr>\n<tr>\n<td>Moondream3 Query<\/td>\n<td>Line-based plain text (LLM-style)<\/td>\n<td>Headings and block structure (labels, dashboards)<\/td>\n<td>Line breaks can get over-segmented<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Results (5 tests)<\/h2>\n<h3>Test 1: Invoice (tables and totals)<\/h3>\n<figure>\n  <img decoding=\"async\" src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/04\/ocr-test-invoice.jpg\" alt=\"Synthetic invoice document for OCR testing\"\/><figcaption>Prompt: A clean flat scan of a fictional invoice document on white paper. Crisp black sans serif text. Include header INVOICE, invoice number INV-2048, date 2026-04-25, bill to section, ship to section, and a table with 5 line items, quantity, unit price, and total. Add a subtotal line, tax line, and grand total. Include a small footer note Payment due in 14 days. No logos. No watermarks. Straight-on top-down scan. Sharp edges. High readability.<\/figcaption><\/figure>\n<p>Easy OCR output<\/p>\n<pre>INVOICE\nInvoice Number: INV-2048\nDate: 2026-04-25\nPayment Due Date: 2026-05-09\nBILL TO:\nSHIP TO:\nNexus Solutions Inc.\nApex Dynamics LLC\n123 Innovation Drivve\n789 Logistics\nSeattle, WA 98101, USA\nPortland, OR 97204, USA\nDESCRIPTION\nQTY\nUNIT PRICE (USD)\nTOTAL (USD)\nSoftware Development (Apr)\n10.00\nS150.00\nS1,500.00\n2.\nCloud Hosting Services\n1.00\nS450.00\nS450.00\n3.\nProject Management Fee\n1.00\nS800.00\nS800.00\n4\nProfessional Consulting\n8.00\nS125.00\nS1,000.00\n5.\nHardware Components\n25.00\nS19.99\nS499.75\nSubtotal:\nS4,249.75\nSales Tax (8.25%):\nS350.60\nTOTAL:\nS4,600.35\n*Payment due in 14 days. Please make checks payable to fictional company: Direct\nbank transfer information available upon request:\nWay\n<\/pre>\n<p>Moondream3 Query output<\/p>\n<pre>INVOICE\nInvoice Number: INV-2048\nDate: 2026-04-25\nPayment Due Date: 2026-05-09\n\nBILL TO: Nexus Solutions Inc.\n123 Innovation Drive\nSeattle, WA 98101, USA\n\nSHIP TO: Apex Dynamics LLC\n789 Logistics Way\nPortland, OR 97204, USA\n\n| DESCRIPTION                  | QTY | UNIT PRICE (USD) | TOTAL (USD) |\n|------------------------------|-----|--------------------|--------------|\n| Software Development (Apr)   | 10.00 | $150.00           | $1,500.00    |\n| Cloud Hosting Services       | 1.00 | $450.00           | $450.00      |\n| Project Management Fee       | 1.00 | $800.00           | $800.00      |\n| Professional Consulting      | 8.00 | $125.00           | $1,000.00    |\n| Hardware Components           | 25.00| $19.99            | $499.75      |\n\nSubtotal: $4,249.75\nSales Tax (8.25%): $350.60\nTOTAL: $4,600.35\n\n*Payment due in 14 days. Please make checks payable to fictional company. Direct bank transfer information available upon request.<\/pre>\n<p>Quick take: Easy OCR kept lots of tokens but split some currency and punctuation. Moondream kept the structure, but broke many lines into single words.<\/p>\n<h3>Test 2: Menu (two columns, prices)<\/h3>\n<figure>\n  <img decoding=\"async\" src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/04\/ocr-test-menu.jpg\" alt=\"Synthetic restaurant menu document for OCR testing\"\/><figcaption>Prompt: A clean top-down scan of a fictional restaurant menu printed on white paper. Crisp black text. Title HARBOR STREET KITCHEN at the top. Two columns with sections: Starters, Mains, Desserts, Drinks. Each item has a short description and a price aligned on the right. Include at least 12 items total. Use simple lines to separate sections. No logos. No photos. High readability.<\/figcaption><\/figure>\n<p>Easy OCR output<\/p>\n<pre>HARBOR STREET KITCHEN\nSTARTERS\nDESSERTS\nClam Chowder\n11\nChocolate Cake\n12\nCreamy New England style,\nRich cocoa, molten center;\nbacon; potatoes\nvanilla ice cream\nCalamari\n16\nApple Pie\n10\nCrispy fried, garlic aioli; lemon\nSpiced apples; flaky crust;\ncaramel drizzle\nSpinach Dip\n14\nWarm spinach, artichoke,\nKey Lime Pie\n11\ntortilla chips\nCreamy lime filling, graham\ncracker crust\nWings\n15\nSpicy Buffalo or BBQ sauce,\nBrownie Sundae\n12\ncelery; ranch\nWarm brownie; hot fudge, nuts,\nBruschetta\n12\ncherry\nToasted ciabatta; tomatoes,\nbasil, garlic\nDRINKS\nMAINS\nSoda\n4\nCoke, Diet Coke, Sprite, Ginger\nFish &amp; Chips\n28\nAle\nCrispy cod, beer batter; fries,\nIced Tea\n4\ntartar sauce\nFreshly brewed, unsweetened or\nLobster Roll\n34\nsweet\nFresh lobster meat; light mayo,\nCoffee\n5\ntoasted bun\nHouse blend, regular or decaf\nBurger\n22\nBeef patty, cheddar; lettuce,\nCraft Beer\ntomato, fries\nLocal selection, ask your server\nSteak\n39\nWine\n11\n1Ooz Grilled sirloin, asparagus;\nGlass of House Red or White\nbaked potato\nCocktail\n15\nScallops\n32\nSignature Old Fashioned or Gin\nPan-seared, lemon butter; risotto\nTonic\n<\/pre>\n<p>Moondream3 Query output<\/p>\n<pre>HARBOR STREET KITCHEN\n\nSTARTERS\nClam Chowder 11\nCalamari 16\nSpinach Dip 14\nWings 15\nCelery, ranch 12\nBruschetta 12\n\nMAINS\nFish &amp; Chips 28\nLobster Roll 34\nBurger 22\nSteak 39\nScallops 32\n\nDESSERTS\nChocolate Cake 12\nApple Pie 10\nKey Lime Pie 11\nBrownie Sundae 12\n\nDRINKS\nSoda 4\nIced Tea 4\nCoffee 5\nHouse Beer 9\nWine 11\nCocktail 15<\/pre>\n<p>Quick take: Easy OCR pulled in more of the item descriptions. Moondream captured headings and prices but dropped most descriptions.<\/p>\n<h3>Test 3: Shipping label (mixed casing, tracking code)<\/h3>\n<figure>\n  <img decoding=\"async\" src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/04\/ocr-test-shipping-label.jpg\" alt=\"Synthetic shipping label for OCR testing\"\/><figcaption>Prompt: A clean top-down scan of a fictional shipping label on white paper. Big bold text SHIP TO and FROM. Include a tracking code TRK-9Z8X-2048-77, a barcode style block, and address blocks with names, street, city, state, postal code. Add a small box with weight 1.4 kg and service PRIORITY. Black text only. No logos. High readability.<\/figcaption><\/figure>\n<p>Easy OCR output<\/p>\n<pre>FROM:\nJOHN DOE\n123 APEX STREET\nPHOENIX, Az 85001\nUNITED STATES\nSHIP TO:\nSARAH MILLER\n456 SPRUCE AVENUE\nAUSTIN; TX 78701\nUNITED STATES\nTRK-9z8X-2048-77\nWEIGHT:\n1.4 kg\nSERVICE:\nPRIORITY\n<\/pre>\n<p>Moondream3 Query output<\/p>\n<pre>FROM:\nJOHN DOE\n123 APEX STREET\nPHOENIX, AZ 85001\nUNITED STATES\n\nSHIP TO:\nSARAH MILLER\n456 SPRUCE AVENUE\nAUSTIN, TX 78701\nUNITED STATES\n\nTRK-9Z8X-2048-77\nWEIGHT: 1.4 kg\nSERVICE: PRIORITY<\/pre>\n<p>Quick take: Both got the key fields. Easy OCR preserved more normal line grouping; Moondream produced a very vertical layout.<\/p>\n<h3>Test 4: Dashboard screenshot (UI chrome)<\/h3>\n<figure>\n  <img decoding=\"async\" src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/04\/ocr-test-dashboard-scaled.jpg\" alt=\"Synthetic dashboard UI screenshot for OCR testing\"\/><figcaption>Prompt: A clean screenshot style mock web page on a light background. Top navigation bar with items Home, Pricing, Docs, Support. Main heading Document OCR Dashboard. Under it, a simple table listing 4 documents with columns File, Pages, Status, Last Run. Include a sidebar on the left with sections Upload, History, Settings. Use crisp readable text, modern UI, no logos, no brand names. High readability.<\/figcaption><\/figure>\n<p>Easy OCR output<\/p>\n<pre>Home\nPricing\nDocs\nSupport\nUpload\nDocument OCR Dashboard\nProcess Single File\nBatch Upload\nFile\nPages\nStatus\nLast Run\nHistory\ninvoice_784.pdf\n3\nCompleted\n2 mins ago\nProcessed Jobs\ncontract_draft_final.docx\n18\nFailed\n10 mins ago\nAudit\nreport_januaryjpg\nCompleted\n35 mins ago\nSettings\nlegal_notes_v3.pdf\n9\nProcessing\nJust Now\nAPI\nAccount\nLog\nKeys\n<\/pre>\n<p>Moondream3 Query output<\/p>\n<pre>Document OCR Dashboard\n\nUpload\nProcess Single File\nBatch Upload\n\nHistory\nProcessed Jobs\nAudit Log\n\nSettings\nAPI Keys\nAccount\n\nFile\ninvoice_784.pdf\n\nPages\n3\n\nStatus\nCompleted\n\nLast Run\n2 mins ago\n\nContract_draft_final.docx\n\nPages\n18\n\nStatus\nFailed\n\nLast Run\n10 mins ago\n\nReport_january.jpg\n\nPages\n1\n\nStatus\nCompleted\n\nLast Run\n35 mins ago\n\nlegal_notes_v3.pdf\n\nPages\n9\n\nStatus\nProcessing\n\nLast Run\nJust Now<\/pre>\n<p>Quick take: Both picked up most UI labels. Easy OCR missed some table values; Moondream kept more of the row structure but still split words.<\/p>\n<h3>Test 5: Math + code sheet (symbols and monospace)<\/h3>\n<figure>\n  <img decoding=\"async\" src=\"https:\/\/wiro.ai\/blog\/wp-content\/uploads\/2026\/04\/ocr-test-stress-sheet.jpg\" alt=\"Synthetic technical note with math and code for OCR testing\"\/><figcaption>Prompt: A clean top-down scan of a one-page technical note on white paper. Title OCR Stress Test Sheet. Include a section with a math formula E = m c squared and an integral from 0 to 1 of x squared dx equals 1 over 3. Include a small code block in monospace with 6 lines of JavaScript about parsing numbers and printing OK. Include a small table with 3 rows and 3 columns labeled Key, Value, Notes. Crisp black text only. No logos. High readability.<\/figcaption><\/figure>\n<p>Easy OCR output<\/p>\n<pre>OCR Stress Test Sheet\nMathematical\nFormulas\nE=mc2\nx2 dx =\n3\nCode Example (JavaScript)\nlet\ninput\n=\n\"123.45\"\nlet\nnum\nparsePloat ( input) ;\nif\n(!isNaN(num) )\nconsole.\n(\"Parsed\nnumber:\"\nnum) ;\nconsole.\n(\"OK\" ) ;\nValue\nNotes\nID\n1001\nTest\nID\nData\nValid\nCorrect\nStatus\nPassed\nAll good\nStandard\ntest\nnoteers\nwith\nstandard\ntest patterns_\nStandard\ntest patterns and valid\ndata\nmore repasible\nconsen\ntest pattern.\nMiscellaneous\nnotes\nread\nstandard\ntest\npattern,\ntherefore\na\nconverame\nof\ndata\nand fidelity.\nData fidelity\nin\nthe\ndefaut platforms\nthat\nnotes\nshould\nbe\nuS\non\nthe\ncorrect\nsand\nthat\ndata\nsotred\non\nthe\nwave of\nthe: conmertet.\nThere fidelity\ndata\ncoltulated\ncollect\ninformation\nwith\nthe\nsame:\ndata\nare compleeted.\nlog\nlog '\nKey\n<\/pre>\n<p>Moondream3 Query output<\/p>\n<pre>OCR Stress Test Sheet\nMathematical Formulas\nE = m c\u00b2\n\u222b\u2080\u1d38 x\u00b2 dx = 1\/3\nCode Example (JavaScript)\nlet input = \"123,45\";\nlet num = parseFloat(input);\nif (!isNaN(num)) {\nconsole.log(`Parsed number:`, num);\nconsole.log(\"Console.log(\"); console.log(\");\");\n}<\/pre>\n<p>Quick take: This was the messiest input. Easy OCR hallucinated lots of extra tokens in the lower half. Moondream did better on the formula line, but the code block got mangled.<\/p>\n<h2>Takeaways<\/h2>\n<ul>\n<li>If you need reliable bulk OCR on clean scans, Easy OCR stays predictable.<\/li>\n<li>If you want OCR plus a bit of semantic grouping (like UI dashboards), Moondream can be useful, but expect odd line breaks.<\/li>\n<li>For math and code, both need validation. Crop and simplify the input when possible.<\/li>\n<\/ul>\n<h2>Try it<\/h2>\n<ul>\n<li>Run Easy OCR: <a href=\"https:\/\/wiro.ai\/models\/wiro\/easy-ocr\">https:\/\/wiro.ai\/models\/wiro\/easy-ocr<\/a><\/li>\n<li>Run Moondream3 Query: <a href=\"https:\/\/wiro.ai\/models\/moondream3-preview\/query\">https:\/\/wiro.ai\/models\/moondream3-preview\/query<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Moondream3 Query vs Easy OCR becomes practical when screenshot OCR tests care about small UI text, extraction speed, and layout consistency. Moondream3&hellip;<\/p>\n","protected":false},"author":4,"featured_media":2480,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51],"tags":[151,131,132,106],"class_list":["post-2481","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-model-comparison","tag-easyocr","tag-image-to-text","tag-moondream3","tag-ocr"],"_links":{"self":[{"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/posts\/2481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/comments?post=2481"}],"version-history":[{"count":3,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/posts\/2481\/revisions"}],"predecessor-version":[{"id":2907,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/posts\/2481\/revisions\/2907"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/media\/2480"}],"wp:attachment":[{"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/media?parent=2481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/categories?post=2481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wiro.ai\/blog\/wp-json\/wp\/v2\/tags?post=2481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}