AI-powered Amharic OCR with layout-preserving export — live at amharic-ocr-extractor.vercel.app
# Amharic OCR Extractor
> Upload scanned Amharic pages. Get accurate, editable text with original layout. Export as PDF, DOCX, or TXT.
## Why this exists
Ethiopic script OCR is an unsolved problem for most tools. Google Docs misses fidel distinctions (ሀ vs ሐ), Adobe Acrobat has no Amharic support, and Tesseract requires local setup with poor accuracy. This app is a purpose-built, one-click solution for Ethiopian publishers, scholars, and church archivists who need to digitize Amharic documents without retyping them.
## What it does
- **OCR pipeline** — Two-pass extraction (raw text recognition, then HTML layout reconstruction) using Gemini 3.1 Flash with Amharic-specific prompts. Preserves fidel distinctions, two-column layout, and embedded images.
- **A4 document editor** — contentEditable canvas with Noto Serif Ethiopic, page-by-page navigation, find-and-replace, homophone correction (common fidel confusion pairs).
- **AI chat assistant** — Canvas-aware agent that can answer questions about the current page or apply edits (change font size, recolor, restructure). No mode toggle — routes chat vs. tool use automatically.
- **Cover generator** — AI-generated cover pages with template grid, photo upload, custom prompt, and binding-type selection.
- **Document library** — Projects saved to Neon PostgreSQL with page images on Vercel Blob. Search, filter, re-open, or download any saved document.
- **Admin panel** — User management, document browsing across all users, block/unblock. Only visible to specified admin emails.
- **Export** — PDF (jsPDF + html2canvas), DOCX (typed with Noto Serif Ethiopic font), plain text, and structured JSON for downstream pipelines (RAG/embedding).
## Tech stack
| Layer | Choice | Why |
|---|---|---|
| Framework | React 19 + TypeScript + Vite 7 | Fastest dev iteration speed for a single-page app; Vite 7's native Tailwind v4 plugin eliminates build config |
| Styling | Tailwind CSS v4 + CSS custom properties | Dark/light mode via a s …