B.L.A.S.T.

Automatic document text-reader (OCR): PDFs, slides, and images in, clean text out.
Live demo ↗GitHub ↗LIVE

Getting text out of scanned PDFs, slide decks, and photos is tedious and unreliable: existing tools break on messy real-world documents.

B.L.A.S.T. reads text out of documents automatically (a technique called OCR) and turns it into clean Markdown or Word files. One pipeline handles multi-page documents, retries automatically when a page fails, and produces deterministic output for the same input. Try it yourself in the live demo.

Key Decision
Split the system into three clear layers (routing, validation, and extraction) so each part stays independently testable and failures are isolated.
Input document (PDF/PPTX/Image) └─→ Navigator (blast_ocr/main.py) └─→ Preprocess + route by source type └─→ Robust OCR extractor └─→ Self-healing retries/backoff └─→ Markdown + DOCX output └─→ Job metrics in SQLite

61.6% reduction in mean character error rate and a 3.9x CPU latency improvement across four pipeline phases, measured against a 14-page evaluation corpus. Fact-check pass rate is the one metric that did not improve, shown here in full rather than omitted.

PhaseMean CERMean WERReading order τFact-checkCPU latency
0 - Baseline0.49920.72880.677042.6%~60.0s
1 - Preprocessing0.49440.72480.682229.8%~33.0s
2 - Layout0.23380.49680.964144.7%~33.0s
3 - RapidOCR ONNX0.19160.47390.975840.4%~15.3s

Fact-check pass rate did not track the other metrics: it dipped to 29.8% at phase 1 and settled at 40.4%, below the 42.6% baseline. Character error, word error, reading order, and latency all improved substantially; fact-check accuracy is a separate, unresolved problem.

The project demonstrates that OCR reliability comes from architecture discipline: strict module boundaries, retry policies, and explicit cleanup matter more than adding more heuristics.

664 automated tests cover the extraction, retry, cleanup, and concurrency paths, and the live Streamlit deployment runs the same pipeline as the CLI.

UET GPTLIVE

A ChatGPT-style assistant that answers UET students' questions (admissions, fees, courses) using real university data...

Next.jsTypeScriptConvex
Menu Data PipelineCOMPLETE

Concurrently pulls menu data from 17 restaurant sites, validates and cleans it with Pydantic and pandas, and pushes a...

Pythonhttpx (HTTP/2)Pydantic

Have documents or scans you need processed automatically? →

Hire Ibrahim / Discuss Scope