<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5874979429188093780</id><updated>2026-04-05T14:17:30.858+02:00</updated><category term="ADF"/><category term="JDeveloper 11g"/><category term="JDeveloper 12c"/><category term="JDeveloper 11g R2"/><category term="ADF BC"/><category term="Python"/><category term="JET"/><category term="Tuning"/><category term="Machine Learning"/><category term="REST"/><category term="WebCenter"/><category term="JavaScript"/><category term="Events"/><category term="Performance"/><category term="Bugs"/><category term="Oracle OpenWorld"/><category term="ADF UI"/><category term="Cloud"/><category term="Mobile"/><category term="OCR"/><category term="SOA"/><category term="WebLogic"/><category term="Red Samurai"/><category term="Security"/><category term="LLM"/><category term="Integration"/><category term="Workarounds"/><category term="ADF Task Flow"/><category term="BPM 11g"/><category term="FastAPI"/><category term="Alta UI"/><category term="RAG"/><category term="VisionLLM"/><category term="Extensions"/><category term="MDS"/><category term="Hugging Face"/><category term="TensorFlow"/><category term="ADF Query"/><category term="Microservices"/><category term="NetBeans"/><category term="Sparrow"/><category term="Traveling"/><category term="UI"/><category term="CRUD"/><category term="LOV"/><category term="Oracle Fusion"/><category term="Web"/><category term="JSON"/><category term="ODTUG Kaleidoscope"/><category term="Django"/><category term="Groovy"/><category term="Uncategorized"/><category term="MAF"/><category term="Validation"/><category term="BPM"/><category term="Docker"/><category term="Forms"/><category term="Spatial"/><category term="UCM"/><category term="Offline"/><category term="Streamlit"/><category term="Web Services"/><category term="12.2.1.2"/><category term="Dynamic"/><category term="VBCS"/><category term="vLLM"/><category term="ChatGPT"/><category term="Kubernetes"/><category term="TopLink"/><category term="WebSockets"/><category term="12.2.1"/><category term="12.2.1.1"/><category term="Chatbot"/><category term="Enterprise Manager"/><category term="MCS"/><category term="Service Bus"/><category term="RabbitMQ"/><category term="Tree"/><category term="iPhone"/><category term="Donut"/><category term="Hybrid"/><category term="LlamaIndex"/><category term="MLX"/><category term="UKOUG"/><category term="Worklist"/><category term="API"/><category term="Architecture"/><category term="BPEL"/><category term="BPM 12c"/><category term="Coherence"/><category term="Database"/><category term="Declarative"/><category term="Locking"/><category term="Ollama"/><category term="Oracle"/><category term="Skipper"/><category term="Structured Data"/><category term="Testing"/><category term="UI Shell"/><category term="Apple"/><category term="Bad Practices"/><category term="Bindings"/><category term="Data"/><category term="HTMX"/><category term="Location"/><category term="Oracle Specialization"/><category term="Process Automation"/><category term="Reports"/><category term="ACM"/><category term="Activation"/><category term="Best Practices"/><category term="Cache"/><category term="Celery"/><category term="Contextual Events"/><category term="FreeTier"/><category term="GitHub"/><category term="Glassfish"/><category term="Gradio"/><category term="HTML"/><category term="Invoice"/><category term="Katana"/><category term="LangChain"/><category term="Layout"/><category term="Linux"/><category term="MLOps"/><category term="Oracle Cloud"/><category term="PCS"/><category term="PopUp"/><category term="Proxy"/><category term="PyScript"/><category term="Qwen3-VL"/><category term="RDK"/><category term="RIDC"/><category term="React"/><category term="Refresh"/><category term="Templates"/><category term="Training"/><category term="plugins"/><category term="12.2.1.3"/><category term="ADS"/><category term="AI"/><category term="Amazon"/><category term="Android"/><category term="Automation"/><category term="Build"/><category term="Business Automation"/><category term="Checkbox"/><category term="Composite"/><category term="DVT"/><category term="Data Science"/><category term="Data Source"/><category term="DeepSeek"/><category term="Features"/><category term="Flask"/><category term="Forecast"/><category term="JDBC"/><category term="Java"/><category term="LLama2"/><category term="Masterclass"/><category term="Mistral"/><category term="MongoDB"/><category term="Neural Networks"/><category term="Ngrok"/><category term="Nomination"/><category term="OFUG"/><category term="Oracle University"/><category term="PDF"/><category term="PS6"/><category term="PaddleOCR"/><category term="Product"/><category term="PyCharm"/><category term="Qwen2"/><category term="User Data"/><category term="View Accessor"/><category term="Virtual Machine"/><category term="Web Casts"/><category term="Web Components"/><category term="Workspace"/><category term="tailwind"/><category term="vision"/><category term="ADF Code Corner"/><category term="ADF Essentials"/><category term="AIA"/><category term="AWS"/><category term="Apex"/><category term="Application Module"/><category term="Awards"/><category term="Blockchain"/><category term="Bug"/><category term="Business Groups"/><category term="Case Study"/><category term="Community"/><category term="Computer Science"/><category term="Computer Vision"/><category term="Copilot"/><category term="Crypto"/><category term="DB View"/><category term="Declarative Mode"/><category term="Deployment"/><category term="Digital Assistant"/><category term="DocumentProcessing"/><category term="EMG"/><category term="Excel"/><category term="Facets"/><category term="GPT-3"/><category term="GPT-4"/><category term="Git"/><category term="Grunt"/><category term="Haystack"/><category term="Heap Memory"/><category term="Instructor"/><category term="Integrated WLS"/><category term="Iterator"/><category term="JCS"/><category term="JDeveloper 19"/><category term="JQuery"/><category term="Jasper"/><category term="Keras"/><category term="List View"/><category term="Local AI"/><category term="Logging"/><category term="MicroFrontends"/><category term="Multitasking"/><category term="NLP"/><category term="Nginx"/><category term="Node.js"/><category term="Notifications"/><category term="Nvidia"/><category term="OAuth"/><category term="On-Prem"/><category term="OpenAI"/><category term="Oracle Magazine"/><category term="Oracle Mobile"/><category term="Patching"/><category term="Podcasts"/><category term="Poll"/><category term="Pydantic"/><category term="Qwen2.5"/><category term="Qwen3.5"/><category term="Radio Group"/><category term="Reference"/><category term="Rollback"/><category term="Router"/><category term="SOAP"/><category term="SQL"/><category term="San Francisco"/><category term="Sequence"/><category term="Socket.io"/><category term="Stocks"/><category term="Transaction"/><category term="TypeScript"/><category term="Update"/><category term="VLM"/><category term="Vector DB"/><category term="Versioning"/><category term="Vgo Software"/><category term="Weaviate"/><category term="Web Tier"/><category term="Web3"/><category term="XGBoost"/><category term="ZeroGPU"/><category term="flowbite"/><category term="iPad"/><category term="structureddata"/><category term="upwork"/><title type='text'>Andrej Baranovskij Blog</title><subtitle type='html'>Blog about Oracle, Full Stack, Machine Learning and Cloud</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default?start-index=26&amp;max-results=25'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1256</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-2626921972284276420</id><published>2026-04-02T20:46:00.009+02:00</published><updated>2026-04-02T21:00:20.431+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Nvidia"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="vLLM"/><title type='text'>Running Multiple Models on One GPU with vLLM and GPU Memory Utilization</title><content type='html'>In this video I show how to run multiple vLLM model instances on the same GPU (Nvidia) in parallel by adjusting the --gpu-memory-utilization flag.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You&#39;ll see:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- How to launch separate vLLM servers for different models&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- How to split GPU memory between them without running out of VRAM&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This approach works when you want to serve several smaller models concurrently on limited hardware.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/Jo7Yg7qYNnE?si=kaY8jDAC1l0qaiiM&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/2626921972284276420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/2626921972284276420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2626921972284276420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2626921972284276420'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2026/04/running-multiple-models-on-one-gpu-with.html' title='Running Multiple Models on One GPU with vLLM and GPU Memory Utilization'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Jo7Yg7qYNnE/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-8166962036208015923</id><published>2026-03-24T20:50:00.004+01:00</published><updated>2026-03-24T20:50:35.486+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="FastAPI"/><category scheme="http://www.blogger.com/atom/ns#" term="Local AI"/><category scheme="http://www.blogger.com/atom/ns#" term="vLLM"/><title type='text'>How to Cache vLLM Model in FastAPI for Faster Inference</title><content type='html'>I show you how to keep your vLLM model loaded in FastAPI cache for much faster inference — without reloading it on every request.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;
&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/s4IStWg5Qdk?si=qrYL51HgK6gav3nw&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/8166962036208015923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/8166962036208015923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/8166962036208015923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/8166962036208015923'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2026/03/how-to-cache-vllm-model-in-fastapi-for.html' title='How to Cache vLLM Model in FastAPI for Faster Inference'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/s4IStWg5Qdk/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-4153739474640433859</id><published>2026-03-16T11:27:00.002+01:00</published><updated>2026-03-16T11:27:20.974+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="Qwen3.5"/><category scheme="http://www.blogger.com/atom/ns#" term="VisionLLM"/><title type='text'> Qwen 3.5 Test for JSON Structured Data Extraction</title><content type='html'>Quick test of the new Qwen 3.5 models on JSON structured data extraction from images. Testing and comparing results for 9B FP16, 27B Q8, and A3B 35B Q8. The 35B Q8 model wins in terms of both speed and accuracy. Test was run on MLX-VLM using a Mac Mini M4 Pro with 64GB RAM&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/zCoBF1nwZSs?si=RsaTFq0sKPqS0lEs&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/4153739474640433859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/4153739474640433859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/4153739474640433859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/4153739474640433859'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2026/03/qwen-35-test-for-json-structured-data.html' title=' Qwen 3.5 Test for JSON Structured Data Extraction'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/zCoBF1nwZSs/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-2640807248345035405</id><published>2026-03-12T13:56:00.005+01:00</published><updated>2026-03-12T13:56:24.334+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Sparrow"/><title type='text'>Fast Large Table Extraction: Sparrow + dots.ocr to JSON</title><content type='html'>Sparrow provides table processing mode. It is optimized to handle large tables, it comes with separate template script (new templates can be easily added) to process dots.ocr markdown output into structure JSON with field mapping.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/BJKCq_7NgMU?si=QnYNEnRaqkeQidWs&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/2640807248345035405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/2640807248345035405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2640807248345035405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2640807248345035405'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2026/03/fast-large-table-extraction-sparrow.html' title='Fast Large Table Extraction: Sparrow + dots.ocr to JSON'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/BJKCq_7NgMU/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-6029749322926442072</id><published>2026-03-04T07:33:00.005+01:00</published><updated>2026-03-04T07:33:50.232+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Sparrow"/><title type='text'> Local OCR Comparison: dots.ocr More Accurate, DeepSeek-OCR 2 Faster (Sparrow + MLX)</title><content type='html'>I run local tests with Sparrow to compare DeepSeek OCR2 and dots.ocr (by RedNote), both run on MLX-VLM in FP16 precision. Dots.ocr consistently beats DeepSeek OCR2 in accuracy, but DeepSeek OCR2 deliveres much better inference performance.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/dIfWLgKAHrI?si=Qz1HEc1rHGi-iDjM&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/6029749322926442072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/6029749322926442072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/6029749322926442072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/6029749322926442072'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2026/03/local-ocr-comparison-dotsocr-more.html' title=' Local OCR Comparison: dots.ocr More Accurate, DeepSeek-OCR 2 Faster (Sparrow + MLX)'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/dIfWLgKAHrI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-3968140218885286418</id><published>2026-02-16T20:06:00.003+01:00</published><updated>2026-02-16T20:06:21.253+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="VisionLLM"/><title type='text'>GLM-OCR vs DeepSeek OCR 2: Which One Wins at Markdown Extraction?</title><content type='html'>I compare two OCR models using real test cases: GLM OCR and DeepSeek OCR2. Both are evaluated on their ability to extract document content and convert it into well-structured Markdown. I demonstrate which model performs better and which one is faster.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;
&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/Bf_KCiAeaAU?si=k2QmRx0rsX6tV1Vv&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/3968140218885286418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/3968140218885286418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/3968140218885286418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/3968140218885286418'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2026/02/glm-ocr-vs-deepseek-ocr-2-which-one.html' title='GLM-OCR vs DeepSeek OCR 2: Which One Wins at Markdown Extraction?'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Bf_KCiAeaAU/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-1226751186395866898</id><published>2026-02-09T10:06:00.004+01:00</published><updated>2026-02-09T10:06:46.029+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="VisionLLM"/><title type='text'>Get Vision LLMs to Follow Your Rules: Prompt-Guided JSON Formatting</title><content type='html'>JSON query helps to fetch structured output with Vision LLM and extract document data. I describe how to improve such output with additional rules provided through LLM prompt. In this video I share example of number formatting, based on applied rule LLM will output values in requested format.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;
&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/n2F-PuM01bs?si=jpsr5PK7GX8OThC-&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/1226751186395866898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/1226751186395866898' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/1226751186395866898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/1226751186395866898'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2026/02/get-vision-llms-to-follow-your-rules.html' title='Get Vision LLMs to Follow Your Rules: Prompt-Guided JSON Formatting'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/n2F-PuM01bs/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-2982656820780215628</id><published>2026-01-27T08:10:00.000+01:00</published><updated>2026-01-27T08:10:01.962+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Sparrow"/><category scheme="http://www.blogger.com/atom/ns#" term="VisionLLM"/><title type='text'>Vision LLM Output Control for Better OCR with Prompt Hints</title><content type='html'>I explain my approach to enforce better OCR output from vision LLMs with prompt hints. This allows to set rules for output data validation and formatting.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/JT0h6XSHAiM?si=3vHLYyHizSLhwvW2&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/2982656820780215628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/2982656820780215628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2982656820780215628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2982656820780215628'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2026/01/vision-llm-output-control-for-better.html' title='Vision LLM Output Control for Better OCR with Prompt Hints'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/JT0h6XSHAiM/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-2933384604893362725</id><published>2026-01-22T08:49:00.003+01:00</published><updated>2026-01-22T08:49:45.999+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DeepSeek"/><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Sparrow"/><title type='text'>DeepSeek OCR Markdown Processing in Sparrow for Large Tables</title><content type='html'>I describe new functionality in Sparrow, where DeepSeek OCR is used to extract text data in markdown format and in the next step instruction LLM inference is utilized to convert data into structured JSON format. This approach helps to improve large table processing and avoid vision LLM hallucinations.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;
&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/yZPDSIkT0fk?si=stVDrfIixw0HGymb&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/2933384604893362725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/2933384604893362725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2933384604893362725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2933384604893362725'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2026/01/deepseek-ocr-markdown-processing-in.html' title='DeepSeek OCR Markdown Processing in Sparrow for Large Tables'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/yZPDSIkT0fk/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-5405292986976158216</id><published>2025-12-27T21:32:00.004+01:00</published><updated>2025-12-27T21:32:39.802+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DeepSeek"/><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'> DeepSeek OCR Review</title><content type='html'>I&#39;m testing structured data extraction with DeepSeek OCR. It works well and gives good data accuracy and performance to disrupt traditional cloud based document processing solutions.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/-15fxomjO1I?si=VdUDLkTg3YAsyVNG&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/5405292986976158216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/5405292986976158216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/5405292986976158216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/5405292986976158216'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/12/deepseek-ocr-review.html' title=' DeepSeek OCR Review'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/-15fxomjO1I/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-6962399256838388305</id><published>2025-12-15T09:00:00.001+01:00</published><updated>2025-12-15T09:00:23.519+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Mistral"/><category scheme="http://www.blogger.com/atom/ns#" term="Ollama"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>New Ministral 3 14B vs Mistral Small 3.2 24B Review</title><content type='html'>I review data accuracy retrieval and inference speed for the new Ministral 3 14B model vs older Mistral Small 3.2 24B. Older and larger 24B model wins this time.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;
&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/AxmEp0YTYeE?si=1bI8Pj8rMQyKGS8N&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/6962399256838388305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/6962399256838388305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/6962399256838388305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/6962399256838388305'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/12/new-ministral-3-14b-vs-mistral-small-32.html' title='New Ministral 3 14B vs Mistral Small 3.2 24B Review'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/AxmEp0YTYeE/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-1314031878205990852</id><published>2025-12-03T08:54:00.004+01:00</published><updated>2025-12-03T08:54:36.199+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="VisionLLM"/><title type='text'>Structured Data Retrieval with Sparrow using OCR and Vision LLM [Improved Accuracy]</title><content type='html'>I explain improvements I&#39;m adding into Sparrow to achieve better accuracy for structured data. I&#39;m using a method, where I run OCR step first, then construct advanced prompt with injected OCR data. This prompt is sent along with image to Vision LLM for structured data retrieval. All this happens as part of a single pipeline.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/skeTDjeqBGU?si=JItZ0GIc3T7pYO_H&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/1314031878205990852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/1314031878205990852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/1314031878205990852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/1314031878205990852'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/12/structured-data-retrieval-with-sparrow.html' title='Structured Data Retrieval with Sparrow using OCR and Vision LLM [Improved Accuracy]'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/skeTDjeqBGU/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-2271449148621127270</id><published>2025-11-26T09:47:00.000+01:00</published><updated>2025-11-26T09:47:01.605+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MLX"/><category scheme="http://www.blogger.com/atom/ns#" term="Ollama"/><category scheme="http://www.blogger.com/atom/ns#" term="vLLM"/><title type='text'>Ollama and MLX-VLM Accuracy Review (Qwen3-VL and Mistral Small 3.2)</title><content type='html'>I was running detail tests to compare accuracy for the same models (Qwen3-VL and Mistral Small 3.2) running on Ollama and MLX-VLM (recent 0.3.7 version). MLX-VLM runs faster, but with lower accuracy. The same is valid across different models.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/RotCS3pMWIA?si=bzSEuC3Ye9B63rmL&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/2271449148621127270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/2271449148621127270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2271449148621127270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2271449148621127270'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/11/ollama-and-mlx-vlm-accuracy-review.html' title='Ollama and MLX-VLM Accuracy Review (Qwen3-VL and Mistral Small 3.2)'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/RotCS3pMWIA/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-3709597108843770815</id><published>2025-11-11T09:08:00.006+01:00</published><updated>2025-11-11T09:08:59.197+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Qwen3-VL"/><title type='text'>Comparing Qwen3-VL AI Models for OCR Task</title><content type='html'>I&#39;m comparing the Qwen3-VL 8B BF16 and Qwen3-VL 30B Q8 models for OCR and structured data extraction tasks. Based on my findings, the quantized 30B model runs faster and with better accuracy than the 8B BF16 model, despite using more memory.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;
&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/ZOsg0WTqiEc?si=DTxDQMa_81OG1eC8&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/3709597108843770815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/3709597108843770815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/3709597108843770815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/3709597108843770815'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/11/comparing-qwen3-vl-ai-models-for-ocr.html' title='Comparing Qwen3-VL AI Models for OCR Task'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/ZOsg0WTqiEc/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-7457232434573778423</id><published>2025-11-04T08:47:00.000+01:00</published><updated>2025-11-04T08:47:01.934+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MLX"/><category scheme="http://www.blogger.com/atom/ns#" term="Ollama"/><category scheme="http://www.blogger.com/atom/ns#" term="Qwen3-VL"/><title type='text'>Qwen3-VL Accuracy Differences on Ollama vs MLX</title><content type='html'>I run couple of tests with structured data extraction using newest Qwen3-VL model on Mac Mini M4 Pro with 64GB. I discovered the same Qwen3-VL model with the same level of quantantization performs differently on Ollama vs. MLX. It seems model conversion step is crucial and we must evaluate model performance on different platforms before going to production.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;
&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/s6DktZsGXTk?si=6FkAPOaADXbMs91M&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/7457232434573778423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/7457232434573778423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/7457232434573778423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/7457232434573778423'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/11/qwen3-vl-accuracy-differences-on-ollama.html' title='Qwen3-VL Accuracy Differences on Ollama vs MLX'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/s6DktZsGXTk/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-6182579839715891625</id><published>2025-10-21T08:39:00.007+02:00</published><updated>2025-10-21T08:39:57.860+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Qwen3-VL"/><title type='text'>Qwen3-VL New Models Comparison and Performance on Mac Mini M4</title><content type='html'>I run and compare newest Qwen3-VL models in Sparrow. Qwen3-VL models run fast and provide good accuracy.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;
&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/DZ1dZ8tvDhY?si=-SoouA6mZkT0z9YX&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/6182579839715891625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/6182579839715891625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/6182579839715891625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/6182579839715891625'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/10/qwen3-vl-new-models-comparison-and.html' title='Qwen3-VL New Models Comparison and Performance on Mac Mini M4'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/DZ1dZ8tvDhY/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-8203088877597315640</id><published>2025-10-10T12:33:00.006+02:00</published><updated>2025-10-10T12:33:56.107+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Sparrow"/><title type='text'>Ollama Support in Sparrow and Update to Latest MLX</title><content type='html'>I explain whats new in Sparrow and what was updated in the recent version.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp; 

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/MLRMQzbG1N4?si=DtCCm6Rl3gPCctHq&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/8203088877597315640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/8203088877597315640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/8203088877597315640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/8203088877597315640'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/10/ollama-support-in-sparrow-and-update-to.html' title='Ollama Support in Sparrow and Update to Latest MLX'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/MLRMQzbG1N4/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-615914128818519461</id><published>2025-09-16T08:34:00.002+02:00</published><updated>2025-09-16T08:34:19.791+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sparrow"/><category scheme="http://www.blogger.com/atom/ns#" term="Structured Data"/><category scheme="http://www.blogger.com/atom/ns#" term="vLLM"/><title type='text'>Ollama vs MLX Inference Speed on Mac Mini M4 Pro 64GB</title><content type='html'>MLX runs faster on first inference, but thanks to model caching or other optimizations by Ollama, second and next inference runs faster on Ollama.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;
&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/SnfDFwHeyA4?si=z1fKw7f-6Fak5bJG&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/615914128818519461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/615914128818519461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/615914128818519461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/615914128818519461'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/09/ollama-vs-mlx-inference-speed-on-mac.html' title='Ollama vs MLX Inference Speed on Mac Mini M4 Pro 64GB'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/SnfDFwHeyA4/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-3869729163137340312</id><published>2025-09-10T20:51:00.001+02:00</published><updated>2025-09-10T20:51:36.911+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Structured Data"/><category scheme="http://www.blogger.com/atom/ns#" term="vLLM"/><title type='text'>Advanced Structured Data Processing in Sparrow</title><content type='html'>I added instruction and validation functionality into Sparrow. This allows to process business logic with document data directly through Sparrow query. For example, it allows to check if given fields are present in the document.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/XsGC2rwVDY4?si=Wxh99y-hH1JqZNMC&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/3869729163137340312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/3869729163137340312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/3869729163137340312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/3869729163137340312'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/09/advanced-structured-data-processing-in.html' title='Advanced Structured Data Processing in Sparrow'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/XsGC2rwVDY4/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-2020849370398741244</id><published>2025-09-01T14:38:00.003+02:00</published><updated>2025-09-01T14:38:16.232+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="LLM"/><category scheme="http://www.blogger.com/atom/ns#" term="PyCharm"/><title type='text'>My Experience with PyCharm AI Assistant</title><content type='html'>Explaining my experience with PyCharm AI Assistant. Showing example how code changes can be reviewed one by one, before they are accepted into your codebase.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/Nxrl8GJI9TQ?si=i-WgMKIdar684OGB&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/2020849370398741244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/2020849370398741244' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2020849370398741244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2020849370398741244'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/09/my-experience-with-pycharm-ai-assistant.html' title='My Experience with PyCharm AI Assistant'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Nxrl8GJI9TQ/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-2883025248107961696</id><published>2025-08-27T09:23:00.003+02:00</published><updated>2025-08-27T09:23:41.736+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Computer Vision"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Structured Data"/><title type='text'>Financial Table Structure Analysis with Computer Vision</title><content type='html'>Explaining new functionality I&#39;m implementing in Sparrow to pre-process tables with grid structure. This greatly improves table data extraction by Vision LLMs.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;
&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/3oWrnLF6r1o?si=mzpSxF74d6vJiKDj&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/2883025248107961696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/2883025248107961696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2883025248107961696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/2883025248107961696'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/08/financial-table-structure-analysis-with.html' title='Financial Table Structure Analysis with Computer Vision'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/3oWrnLF6r1o/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-1560604467393055490</id><published>2025-07-23T21:24:00.006+02:00</published><updated>2025-07-23T21:24:46.495+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PaddleOCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Sparrow"/><category scheme="http://www.blogger.com/atom/ns#" term="VisionLLM"/><title type='text'>PaddleOCR 3.1 Setup in FastAPI</title><content type='html'>I explain how to run PaddleOCR 3.1 from FastAPI app.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/ftBNkG7kUOI?si=n31eTk7cuphU3IBj&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/1560604467393055490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/1560604467393055490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/1560604467393055490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/1560604467393055490'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/07/paddleocr-31-setup-in-fastapi.html' title='PaddleOCR 3.1 Setup in FastAPI'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/ftBNkG7kUOI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-4014127020332727971</id><published>2025-07-14T20:13:00.007+02:00</published><updated>2025-07-14T20:13:44.491+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Sparrow"/><category scheme="http://www.blogger.com/atom/ns#" term="VisionLLM"/><title type='text'>Structured Data Query with Sparrow AI Agent</title><content type='html'>Sparrow comes with option to extract stuctured data with query. In this video I explain how you can define such query to fetch array and field data.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/sGKvVXzOSqI?si=DZP3cN2uiD8kqjcp&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/4014127020332727971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/4014127020332727971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/4014127020332727971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/4014127020332727971'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/07/structured-data-query-with-sparrow-ai.html' title='Structured Data Query with Sparrow AI Agent'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/sGKvVXzOSqI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-1433600612407198877</id><published>2025-07-08T21:08:00.004+02:00</published><updated>2025-07-08T21:08:30.254+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MLX"/><category scheme="http://www.blogger.com/atom/ns#" term="OCR"/><category scheme="http://www.blogger.com/atom/ns#" term="Sparrow"/><category scheme="http://www.blogger.com/atom/ns#" term="VisionLLM"/><title type='text'>Vision LLM with MLX: Extracting Electric Meter Data in Production</title><content type='html'>In this video, I share my experience using the MLX backend to run Vision LLM (with MLX-VLM) for structured data extraction in a production environment. See how I used Sparrow to accurately read electric meter data and learn practical tips for deploying similar solutions.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;
&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/FWX4sbvZQtM?si=XNd9RNPBORbtkVkb&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/1433600612407198877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/1433600612407198877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/1433600612407198877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/1433600612407198877'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/07/vision-llm-with-mlx-extracting-electric.html' title='Vision LLM with MLX: Extracting Electric Meter Data in Production'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/FWX4sbvZQtM/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5874979429188093780.post-4371880387016906607</id><published>2025-06-30T09:25:00.004+02:00</published><updated>2025-06-30T09:25:35.965+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="structureddata"/><category scheme="http://www.blogger.com/atom/ns#" term="upwork"/><category scheme="http://www.blogger.com/atom/ns#" term="vLLM"/><title type='text'>Solving Upwork Client Task with Sparrow</title><content type='html'>I show how Sparrow can be used to handle complex Upwork task, with accurate table data extraction. Key requirement is to prevent Vision LLM hallucinations, this is achieved by Sparrow hybrid data processing approach.&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;

&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; src=&quot;https://www.youtube.com/embed/ZJzAsDBq14w?si=fh7iBj5d54xGj2Db&quot; title=&quot;YouTube video player&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrejusb.blogspot.com/feeds/4371880387016906607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5874979429188093780/4371880387016906607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/4371880387016906607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5874979429188093780/posts/default/4371880387016906607'/><link rel='alternate' type='text/html' href='http://andrejusb.blogspot.com/2025/06/solving-upwork-client-task-with-sparrow.html' title='Solving Upwork Client Task with Sparrow'/><author><name>Andrej Baranovskij</name><uri>http://www.blogger.com/profile/04468230464412457426</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtQ6y1WfnZZ1InInh-abQGCi5iMQDsatwgM7Gvvf7gE2ePpXqAzDKKrdrcmDVWtkjv-RZSdm_FmQ0rn8xSq7UCZNSZPMmo-7aIhwRv4gxV2LW5QhOEzHdNmXjshPyk8d4/s99/Screen+Shot+2018-06-18+at+20.28.41.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/ZJzAsDBq14w/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>