OCR Table Extractor
Overview
This project extracts structured tables from scanned PDF documents and images.
PaddleOCR-VL is used as the primary table extraction model. Gemini independently analyzes the same document and is used as a verification model to identify cells that may require manual review.
Features
- Scanned PDF and image upload
- Automatic table extraction
- English and Arabic table support
- Excel workbook generation
- Highlighted disagreements between models
- Review Needed worksheet
- Summary worksheet
- Supabase storage and job tracking
Base Model
This project uses the official PaddleOCR-VL model.
The PaddleOCR-VL weights were not trained or created by this project. They are downloaded automatically through PaddleOCR when the backend starts.
No custom fine-tuned checkpoint has been uploaded yet.
Processing Pipeline
- A user uploads a PDF or image.
- PaddleOCR-VL detects and extracts the tables.
- Gemini extracts the same document independently.
- The two outputs are compared.
- PaddleOCR remains the primary output.
- Different cells are highlighted for manual review.
- A reviewed Excel workbook is generated.
Supported Inputs
- PNG
- JPG
- JPEG
- WebP
Supported Languages
- English
- Arabic
- Mixed English and Arabic tables
Current Limitations
- Arabic OCR may contain spelling or character errors.
- Complex merged cells may be interpreted differently.
- Tables continuing across pages may require post-processing.
- Gemini availability depends on its external API.
- The public Vercel deployment currently contains the frontend only.
- The PaddleOCR backend requires a separate machine with suitable processing capacity.
Source Code
https://github.com/hazemmohamedsayed/OCR-table-extractor
Live Frontend
https://ocr-table-extractor-lemon.vercel.app
Future Work
- Fine-tune a model using company-specific bilingual forms.
- Improve Arabic text normalization.
- Improve multi-page table merging.
- Deploy the FastAPI OCR backend publicly.
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support