{"id":"layout-aware-ocr","slug":"layout-aware-ocr","name":"Layout-aware OCR & form extraction","shortName":"Layout OCR","problemStatement":"Extract tables, checkboxes, multi-column layouts, and key-value forms from PDFs/scans where naive chunking destroys structure.","whenNotTopPick":"Simple markdown chunking is enough (LlamaParse), or you need broad ETL connectors (Unstructured).","categoryIds":["cat-search-scrape"],"depotPickProviderId":"reducto","depotPickRationale":"Distinct from `document-parse` (general LLM-ready chunks). Weight capability on layout fidelity. Confidence: medium-high on Reducto agentic OCR positioning.","runnersUpIds":["llama-parse","unstructured","jina"],"weights":{"capabilityFit":0.32,"pricePerformance":0.12,"latencyReliability":0.14,"developerDx":0.12,"privacyPosture":0.12,"lockInRisk":0.08,"maturity":0.1},"methodologyNotes":"Distinct from `document-parse` (general LLM-ready chunks). Weight capability on layout fidelity. Confidence: medium-high on Reducto agentic OCR positioning.","tags":["ocr","pdf","forms","document-ai"],"depth":{"whenNotToUse":{"text":"Simple markdown chunking is enough (LlamaParse), or you need broad ETL connectors (Unstructured).","source":"editorial `whenNotTopPick` (data/jtbds.json)"},"whenNotToUseReason":null,"runnerUp":{"providerId":"llama-parse","name":"LlamaParse","overallForJob":8.24,"pickOverallForJob":8.11,"beatsPickOn":["pricePerformance","latencyReliability","developerDx","maturity"],"source":"first resolvable entry of the job's editorially ranked `runnersUpIds`; scores are stored job-weighted scores"},"runnerUpReason":null,"lockIn":{"pickLockInRisk":4.5,"runnerUpLockInRisk":4.8,"scale":"0–10 stored curated estimate; higher = more lock-in (worse)","pickExitSignals":[],"runnerUpExitSignals":[],"pickNotes":[],"selfHostFallback":[{"id":"florence-2-base","name":"Florence-2-base","license":"MIT","sourceUrl":"https://huggingface.co/microsoft/Florence-2-base/raw/main/LICENSE"},{"id":"paddleocr","name":"PaddleOCR","license":"Apache-2.0","sourceUrl":"https://raw.githubusercontent.com/PaddlePaddle/PaddleOCR/main/LICENSE"},{"id":"easyocr","name":"EasyOCR","license":"Apache-2.0","sourceUrl":"https://raw.githubusercontent.com/JaidedAI/EasyOCR/master/LICENSE"}],"migration":"The pick has lower stored lock-in risk than runner-up LlamaParse (4.5 vs 4.8). Self-host fallback listed for this job: Florence-2-base, PaddleOCR, EasyOCR.","migrationReason":null,"derivedFrom":"stored lockInRisk scores, provider tags (oss, self-host, openai-compat, open-models), free rows that list this job, and verbatim provider notes. No migration guide was invented."}},"freshness":{"pick":{"score":{"asOf":"2026-09-14","ageDays":43,"stale":true,"staleAfterDays":30,"reason":null},"lastReviewed":{"asOf":"2026-09-14","ageDays":43,"stale":true,"staleAfterDays":30,"reason":null},"sourceCheck":{"checkedAt":"2026-10-27","sourceUrls":2,"sourcesReachable":2,"pricingRows":2,"pricingRowsReconfirmed":1,"note":"A source re-check confirms the page is reachable and, for pricing rows, that the stored amount and SKU name appear on it. It does not re-derive or change the score.","reason":null}}},"depotPick":{"id":"reducto","slug":"reducto","name":"Reducto","tagline":"Use when LlamaParse Agentic still drops tables/forms. Depot still picks LlamaParse for default document-parse…","overall":8.11},"runnersUp":[{"id":"llama-parse","slug":"llama-parse","name":"LlamaParse","tagline":"Depot pick for document-parse (PDF/Office → LLM-ready markdown/JSON). Unstructured when you need ETL…","overall":8.24},{"id":"unstructured","slug":"unstructured","name":"Unstructured","tagline":"Best when you want connector-heavy document ETL or to self-host the OSS partitioner. LlamaParse remains the…","overall":8.13},{"id":"jina","slug":"jina","name":"Jina AI","tagline":"Promoted high after pinning official models API token matrix ($0.05/1M). Best as EU-friendly all-in-one…","overall":8.07}]}