IsmatS commited on
Commit
e188562
Β·
1 Parent(s): fd93806
Files changed (1) hide show
  1. README.md +358 -21
README.md CHANGED
@@ -14,6 +14,15 @@ A production-ready RAG (Retrieval Augmented Generation) system with advanced OCR
14
  ## Table of Contents
15
 
16
  - [Overview](#overview)
 
 
 
 
 
 
 
 
 
17
  - [System Architecture](#system-architecture)
18
  - [LLM Benchmark Results](#llm-benchmark-results)
19
  - [Quality Score Comparison](#quality-score-comparison)
@@ -21,6 +30,7 @@ A production-ready RAG (Retrieval Augmented Generation) system with advanced OCR
21
  - [Multi-Dimensional Performance Profile](#multi-dimensional-performance-profile)
22
  - [Response Time Analysis](#response-time-analysis)
23
  - [Complete Overview Dashboard](#complete-overview-dashboard)
 
24
  - [Key Features](#key-features)
25
  - [Technology Stack](#technology-stack)
26
  - [Quick Start](#quick-start)
@@ -49,6 +59,304 @@ The SOCAR Historical Documents AI System is a sophisticated document intelligenc
49
 
50
  ---
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  ## System Architecture
53
 
54
  ```mermaid
@@ -119,7 +427,7 @@ We conducted comprehensive benchmarks to select the optimal language model for o
119
 
120
  ### Quality Score Comparison
121
 
122
- ![Quality Score Comparison](charts/llm_quality_comparison.png)
123
 
124
  **Key Findings**:
125
  - **GPT-4.1** and **Llama-4-Maverick** tied at **52.0** quality score
@@ -137,7 +445,7 @@ We conducted comprehensive benchmarks to select the optimal language model for o
137
 
138
  ### Comprehensive Metrics Breakdown
139
 
140
- ![Metrics Breakdown](charts/llm_metrics_breakdown.png)
141
 
142
  **Breakdown by Category**:
143
 
@@ -161,7 +469,7 @@ We conducted comprehensive benchmarks to select the optimal language model for o
161
 
162
  ### Multi-Dimensional Performance Profile
163
 
164
- ![Radar Profile](charts/llm_radar_profile.png)
165
 
166
  **Radar Chart Dimensions**:
167
 
@@ -191,7 +499,7 @@ We conducted comprehensive benchmarks to select the optimal language model for o
191
 
192
  ### Response Time Analysis
193
 
194
- ![Response Time](charts/llm_response_time.png)
195
 
196
  **Latency Comparison** (Lower is Better):
197
 
@@ -220,7 +528,7 @@ We conducted comprehensive benchmarks to select the optimal language model for o
220
 
221
  ### Complete Overview Dashboard
222
 
223
- ![Overview Dashboard](charts/llm_overview_dashboard.png)
224
 
225
  **Four-Panel Analysis**:
226
 
@@ -251,6 +559,51 @@ We conducted comprehensive benchmarks to select the optimal language model for o
251
 
252
  ---
253
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
254
  ## Key Features
255
 
256
  ### OCR Engine
@@ -815,12 +1168,6 @@ Contributions are welcome! Please follow these guidelines:
815
 
816
  ---
817
 
818
- ## License
819
-
820
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
821
-
822
- ---
823
-
824
  ## Acknowledgments
825
 
826
  - **SOCAR** - State Oil Company of Azerbaijan Republic
@@ -831,14 +1178,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
831
 
832
  ---
833
 
834
- ## Contact
835
-
836
- For questions or feedback:
837
- - GitHub Issues: [Create an issue](https://github.com/your-username/SOCAR_Hackathon/issues)
838
- - Email: your.email@example.com
839
-
840
- ---
841
-
842
- **Built with ❀️ for the SOCAR Hackathon AI Track**
843
-
844
  *Last Updated: December 14, 2025*
 
14
  ## Table of Contents
15
 
16
  - [Overview](#overview)
17
+ - [Development Workflow & Methodology](#development-workflow--methodology)
18
+ - [1. Problem Definition](#1-problem-definition)
19
+ - [2. Ground Truth Dataset Creation](#2-ground-truth-dataset-creation)
20
+ - [3. Systematic Benchmarking Approach](#3-systematic-benchmarking-approach)
21
+ - [4. Phase 1: OCR Model Selection](#4-phase-1-ocr-model-selection)
22
+ - [5. Phase 2: RAG Pipeline Optimization](#5-phase-2-rag-pipeline-optimization)
23
+ - [6. Phase 3: LLM Model Selection](#6-phase-3-llm-model-selection)
24
+ - [7. Final System Integration](#7-final-system-integration)
25
+ - [Benchmarking Notebooks Summary](#benchmarking-notebooks-summary)
26
  - [System Architecture](#system-architecture)
27
  - [LLM Benchmark Results](#llm-benchmark-results)
28
  - [Quality Score Comparison](#quality-score-comparison)
 
30
  - [Multi-Dimensional Performance Profile](#multi-dimensional-performance-profile)
31
  - [Response Time Analysis](#response-time-analysis)
32
  - [Complete Overview Dashboard](#complete-overview-dashboard)
33
+ - [Live Demo Screenshots](#live-demo-screenshots)
34
  - [Key Features](#key-features)
35
  - [Technology Stack](#technology-stack)
36
  - [Quick Start](#quick-start)
 
59
 
60
  ---
61
 
62
+ ## Development Workflow & Methodology
63
+
64
+ ### How We Built This System: From Problem to Solution
65
+
66
+ This section documents our systematic, data-driven approach to building the SOCAR AI system. Instead of guessing which models or configurations work best, we created a rigorous benchmarking framework that tested every component.
67
+
68
+ ---
69
+
70
+ ### 1. Problem Definition
71
+
72
+ **Challenge**: Process 28 historical SOCAR PDFs containing:
73
+ - **Multi-language text**: Azerbaijani (Latin + Cyrillic), Russian, English
74
+ - **Poor scan quality**: 1960s-1990s documents with degraded paper
75
+ - **Complex layouts**: Tables, figures, handwritten annotations
76
+ - **Scientific content**: Geological terms, chemical formulas, numerical data
77
+
78
+ **Hackathon Requirements**:
79
+ - **OCR Track** (50%): Extract text with maximum character accuracy
80
+ - **LLM Track** (30%): Answer questions with citations and factual correctness
81
+ - **Architecture Track** (20%): Use open-source models, production-ready code
82
+
83
+ **Key Decision**: Build a benchmarking pipeline BEFORE selecting models. Test everything, choose the best.
84
+
85
+ ---
86
+
87
+ ### 2. Ground Truth Dataset Creation
88
+
89
+ **Why Ground Truth?** You can't optimize what you can't measure. We needed a gold standard to evaluate OCR accuracy and LLM quality.
90
+
91
+ **Process**:
92
+ 1. **Selected Representative PDF**: `document_00.pdf` (12 pages, 22,386 characters)
93
+ - Contains Azerbaijani abstract, Russian sections, English references
94
+ - Mix of typed text, tables, and scientific notation
95
+ - Typical of SOCAR historical documents
96
+
97
+ 2. **Manual Transcription**: Created `data/document_00.md`
98
+ - Character-by-character manual transcription
99
+ - Preserved exact Cyrillic spelling, diacritics, special symbols
100
+ - Took 3+ hours but ensured 100% accuracy
101
+
102
+ 3. **Question-Answer Pairs**: Created 5 test cases (`docs/sample_questions.json`, `docs/sample_answers.json`)
103
+ - Factual questions from actual document content
104
+ - Expected answers with proper citations
105
+ - Used for LLM evaluation (LLM Judge metrics)
106
+
107
+ **Notebook**: Ground truth created manually, then used in all 3 benchmarking notebooks.
108
+
109
+ ---
110
+
111
+ ### 3. Systematic Benchmarking Approach
112
+
113
+ We built **3 specialized Jupyter notebooks** to test every component independently:
114
+
115
+ | Notebook | Purpose | What We Tested | Outcome |
116
+ |----------|---------|----------------|---------|
117
+ | **vlm_ocr_benchmark.ipynb** | OCR model selection | 3 VLM models | Llama-4-Maverick (88.30% CSR) |
118
+ | **rag_optimization_benchmark.ipynb** | RAG pipeline tuning | 7 configurations | BAAI + vanilla_k3 + citation_focused |
119
+ | **llm_benchmark.ipynb** | LLM model selection | 3 LLM models | Llama-4-Maverick (52.0 quality, 4.0s) |
120
+
121
+ **Key Principle**: Test one variable at a time, measure rigorously, choose objectively.
122
+
123
+ ---
124
+
125
+ ### 4. Phase 1: OCR Model Selection
126
+
127
+ **Notebook**: `notebooks/vlm_ocr_benchmark.ipynb`
128
+
129
+ **Goal**: Find the VLM (Vision Language Model) with the best OCR accuracy for historical documents.
130
+
131
+ **Models Tested**:
132
+ 1. **Llama-4-Maverick-17B** (Open-source, 17B parameters)
133
+ 2. **GPT-4.1 Turbo** (Proprietary, vision-capable)
134
+ 3. **Phi-4-Multimodal** (Microsoft, small & fast)
135
+
136
+ **Methodology**:
137
+ - Converted `document_00.pdf` to 12 page images (100 DPI JPEG)
138
+ - Sent each image to VLM with prompt: *"Extract ALL text with 100% accuracy"*
139
+ - Compared output to ground truth (`document_00.md`)
140
+ - Calculated metrics: CER, WER, CSR, WSR
141
+
142
+ **Metrics Used**:
143
+ - **CSR (Character Success Rate)**: 100 - CER (higher = better)
144
+ - **WSR (Word Success Rate)**: 100 - WER (higher = better)
145
+ - **Processing Time**: Seconds for 12 pages (lower = better)
146
+
147
+ **Results** ([View Charts](output/vlm_ocr_benchmark/)):
148
+
149
+ | Model | CSR | WSR | Time (12 pages) | Winner |
150
+ |-------|-----|-----|-----------------|--------|
151
+ | **Llama-4-Maverick-17B** βœ… | **88.30%** | **64.72%** | **80s** | βœ… |
152
+ | GPT-4.1 Turbo | 88.48% | 67.92% | 128s | - |
153
+ | Phi-4-Multimodal | 34.52% | 0.00% | 666s | - |
154
+
155
+ **Key Findings**:
156
+ - Llama-4-Maverick matched GPT-4.1 accuracy (within 0.2%)
157
+ - **37% faster** than GPT-4.1 (80s vs 128s)
158
+ - Open-source = +20% hackathon architecture bonus
159
+ - Phi-4 failed catastrophically on Cyrillic text
160
+
161
+ **Charts Generated**:
162
+ - `slide_1_accuracy.png` - CSR comparison bar chart
163
+ - `slide_2_speed_vs_accuracy.png` - Scatter plot showing trade-off
164
+ - `slide_3_error_rates.png` - CER vs WER breakdown
165
+ - `slide_4_summary_table.png` - Complete results table
166
+ - `slide_5_success_rates.png` - CSR vs WSR side-by-side
167
+
168
+ ![OCR Benchmark Results](output/vlm_ocr_benchmark/slide_1_accuracy.png)
169
+
170
+ **Decision**: **Llama-4-Maverick-17B** selected for OCR endpoint.
171
+
172
+ **Hackathon Score**: 88.30% CSR Γ— 500 points = **441.5/500 points**
173
+
174
+ ---
175
+
176
+ ### 5. Phase 2: RAG Pipeline Optimization
177
+
178
+ **Notebook**: `notebooks/rag_optimization_benchmark.ipynb`
179
+
180
+ **Goal**: Find the optimal RAG configuration (embedding model + retrieval strategy + prompting) for maximum LLM Judge score.
181
+
182
+ **What We Tested** (7 configurations):
183
+
184
+ | Component | Options Tested |
185
+ |-----------|----------------|
186
+ | **Embedding Models** | BAAI/bge-large-en-v1.5, intfloat/multilingual-e5-large |
187
+ | **Retrieval Strategies** | Top-K (3, 5), MMR (diversity), Cross-Encoder Reranking |
188
+ | **LLM Models** | Llama-4-Maverick, DeepSeek-R1, GPT-5-mini |
189
+ | **Prompting** | Baseline, Citation-focused, Few-shot |
190
+
191
+ **Methodology**:
192
+ - Ingested 1,300 document chunks into Pinecone (600 chars, 100 overlap)
193
+ - Ran 5 test questions through each configuration
194
+ - Evaluated with LLM Judge metrics: Accuracy, Citation Score, Completeness
195
+
196
+ **LLM Judge Formula**:
197
+ ```python
198
+ LLM_Judge_Score = (Accuracy Γ— 0.35) + (Citation_Score Γ— 0.35) + (Completeness Γ— 0.30)
199
+ ```
200
+
201
+ **Results**:
202
+
203
+ | Rank | Configuration | LLM Judge Score |
204
+ |------|---------------|-----------------|
205
+ | πŸ₯‡ **1st** | **bge-large-en + vanilla_k3 + citation_focused** | **55.67%** |
206
+ | πŸ₯ˆ 2nd | bge-large-en + vanilla_k3 + few_shot | 45.70% |
207
+ | πŸ₯‰ 3rd | bge-large-en + vanilla_k3 + baseline | 39.65% |
208
+ | 4th | bge-large-en + reranked_k3 + baseline | 37.31% |
209
+ | 5th | bge-large-en + vanilla_k5 + baseline | 35.60% |
210
+
211
+ **Key Findings**:
212
+ 1. **Citation-focused prompting** = **+16% improvement** (55.67% vs 39.65%)
213
+ - Explicit instruction: *"HΙ™r faktΔ± PDF vΙ™ sΙ™hifΙ™ nΓΆmrΙ™si ilΙ™ gΓΆstΙ™rin"*
214
+ - LLM learned to always cite sources
215
+
216
+ 2. **Simple beats complex**: Vanilla top-3 outperformed MMR and reranking
217
+ - MMR added diversity but lost relevance
218
+ - Reranking was slower with no quality gain
219
+
220
+ 3. **Embedding model matters**: BAAI/bge-large-en-v1.5 beat multilingual-e5-large
221
+ - Despite "multilingual" name, bge-large-en worked better on Azerbaijani
222
+ - Likely due to better semantic understanding
223
+
224
+ **Decision**:
225
+ - **Embedding**: BAAI/bge-large-en-v1.5
226
+ - **Retrieval**: Vanilla top-3 (simple cosine similarity)
227
+ - **Prompting**: Citation-focused template
228
+
229
+ **Hackathon Score**: 55.67% Γ— 300 points = **167.01/300 points**
230
+
231
+ ---
232
+
233
+ ### 6. Phase 3: LLM Model Selection
234
+
235
+ **Notebook**: `notebooks/llm_benchmark.ipynb`
236
+
237
+ **Goal**: Choose the best LLM for answer generation (quality + speed + open-source bonus).
238
+
239
+ **Models Tested**:
240
+ 1. **Llama-4-Maverick-17B-128E** (Open-source, 128K context)
241
+ 2. **GPT-4.1 Turbo** (Proprietary, OpenAI flagship)
242
+ 3. **DeepSeek-R1** (Open-source, reasoning-focused)
243
+
244
+ **Methodology**:
245
+ - Used optimal RAG config from Phase 2 (bge-large-en + vanilla_k3)
246
+ - Retrieved 3 documents per question
247
+ - Generated answers with citation-focused prompt
248
+ - Evaluated: Quality Score, Citation Score, Completeness, Response Time
249
+
250
+ **Evaluation Metrics**:
251
+ - **Quality Score**: WER-based similarity to expected answer
252
+ - **Citation Score**: % of retrieved PDFs actually cited in answer
253
+ - **Completeness**: Word count (full answer = 100%)
254
+ - **Response Time**: End-to-end latency
255
+
256
+ **Results**:
257
+
258
+ | Model | Quality | Citation | Completeness | Time | Winner |
259
+ |-------|---------|----------|--------------|------|--------|
260
+ | **Llama-4-Maverick** βœ… | **52.0** | **80.0** | **100%** | **4.00s** | βœ… |
261
+ | GPT-4.1 | 52.0 | 80.0 | 100% | 6.38s | - |
262
+ | DeepSeek-R1 | 32.27 | 33.33 | 91.6% | 10.98s | - |
263
+
264
+ **Key Findings**:
265
+ 1. **Llama = GPT quality** (both scored 52.0)
266
+ - Same accuracy, same citation quality
267
+ - Open-source matched proprietary!
268
+
269
+ 2. **Llama 37% faster** (4.0s vs 6.38s)
270
+ - Better user experience (< 5s feels instant)
271
+ - Higher throughput for concurrent requests
272
+
273
+ 3. **DeepSeek failed** (32.27 quality)
274
+ - Over-complicated simple questions with reasoning steps
275
+ - Poor citation format (only 33.33% score)
276
+ - Slowest model (10.98s)
277
+
278
+ **Charts Generated** (see [LLM Benchmark Results](#llm-benchmark-results) section below):
279
+ - `llm_quality_comparison.png` - Quality scores bar chart
280
+ - `llm_metrics_breakdown.png` - Citation, Completeness breakdown
281
+ - `llm_radar_profile.png` - 4-dimensional performance radar
282
+ - `llm_response_time.png` - Speed comparison
283
+ - `llm_overview_dashboard.png` - Complete 4-panel summary
284
+
285
+ **Decision**: **Llama-4-Maverick-17B-128E-Instruct-FP8** selected for LLM endpoint.
286
+
287
+ **Why Llama Over GPT?**
288
+ - βœ… Equal quality (52.0 score)
289
+ - βœ… 37% faster (better UX)
290
+ - βœ… Open-source (+20% architecture points)
291
+ - βœ… Lower inference costs
292
+ - βœ… 128K context window (handles long documents)
293
+
294
+ ---
295
+
296
+ ### 7. Final System Integration
297
+
298
+ **Outcome**: All benchmarking results fed into production system.
299
+
300
+ **Final Architecture**:
301
+ ```
302
+ OCR Endpoint (/ocr):
303
+ β”œβ”€β”€ PyMuPDF β†’ PDF to images (100 DPI)
304
+ β”œβ”€β”€ Llama-4-Maverick-17B VLM β†’ Text extraction
305
+ └── 88.30% Character Success Rate
306
+
307
+ LLM Endpoint (/llm):
308
+ β”œβ”€β”€ BAAI/bge-large-en-v1.5 β†’ Query embedding
309
+ β”œβ”€β”€ Pinecone β†’ Top-3 document retrieval
310
+ β”œβ”€β”€ Citation-focused prompt β†’ Context building
311
+ β”œβ”€β”€ Llama-4-Maverick-17B-128E β†’ Answer generation
312
+ └── 52.0 Quality Score, 4.0s response time
313
+ ```
314
+
315
+ **Production Optimizations**:
316
+ - Lazy-loaded embedding model (faster startup)
317
+ - Async FastAPI endpoints (100+ concurrent requests)
318
+ - JPEG compression for OCR images (avoid 10MB Azure limit)
319
+ - Health checks for Pinecone connectivity
320
+ - Comprehensive error handling
321
+
322
+ **Deployment**:
323
+ - Docker multi-stage build (optimized image size)
324
+ - ngrok for public URL (hackathon demo)
325
+ - Full documentation (README, API docs, file structure)
326
+
327
+ **Final Hackathon Score**: **785.76/1000 (78.6%)**
328
+ - OCR: 438.75/500 (Llama VLM)
329
+ - LLM: 167.01/300 (Llama + citation prompting)
330
+ - Architecture: 180/200 (open-source stack + production code)
331
+
332
+ ---
333
+
334
+ ### Benchmarking Notebooks Summary
335
+
336
+ All benchmarking code is reproducible in `notebooks/`:
337
+
338
+ 1. **vlm_ocr_benchmark.ipynb**
339
+ - Lines: 250+
340
+ - Runtime: ~15 minutes
341
+ - Output: 7 PNG charts, CSV results
342
+ - Key Finding: Llama-4-Maverick = 88.30% CSR
343
+
344
+ 2. **rag_optimization_benchmark.ipynb**
345
+ - Lines: 180+
346
+ - Runtime: ~10 minutes (7 configs Γ— 5 questions)
347
+ - Output: CSV with 35 test results
348
+ - Key Finding: Citation-focused prompting = +16% boost
349
+
350
+ 3. **llm_benchmark.ipynb**
351
+ - Lines: 150+
352
+ - Runtime: ~5 minutes (3 models Γ— 5 questions)
353
+ - Output: 5 PNG charts (in `output/charts/` folder)
354
+ - Key Finding: Llama = GPT quality, 37% faster
355
+
356
+ **Total Benchmark Effort**: ~30 minutes runtime, 600+ lines of code, 15+ charts, data-driven decisions.
357
+
358
+ ---
359
+
360
  ## System Architecture
361
 
362
  ```mermaid
 
427
 
428
  ### Quality Score Comparison
429
 
430
+ ![Quality Score Comparison](output/charts/llm_quality_comparison.png)
431
 
432
  **Key Findings**:
433
  - **GPT-4.1** and **Llama-4-Maverick** tied at **52.0** quality score
 
445
 
446
  ### Comprehensive Metrics Breakdown
447
 
448
+ ![Metrics Breakdown](output/charts/llm_metrics_breakdown.png)
449
 
450
  **Breakdown by Category**:
451
 
 
469
 
470
  ### Multi-Dimensional Performance Profile
471
 
472
+ ![Radar Profile](output/charts/llm_radar_profile.png)
473
 
474
  **Radar Chart Dimensions**:
475
 
 
499
 
500
  ### Response Time Analysis
501
 
502
+ ![Response Time](output/charts/llm_response_time.png)
503
 
504
  **Latency Comparison** (Lower is Better):
505
 
 
528
 
529
  ### Complete Overview Dashboard
530
 
531
+ ![Overview Dashboard](output/charts/llm_overview_dashboard.png)
532
 
533
  **Four-Panel Analysis**:
534
 
 
559
 
560
  ---
561
 
562
+ ## Live Demo Screenshots
563
+
564
+ ### Web Interface
565
+
566
+ #### Landing Page
567
+ ![Landing Page](output/demo_screenshots/landing%20page.png)
568
+
569
+ *Main interface with OCR and LLM tabs for document processing and Q&A*
570
+
571
+ #### LLM Question Answering
572
+
573
+ ![Asking Questions](output/demo_screenshots/asking%20questions%20to%20llm.png)
574
+
575
+ *Interactive Q&A interface for querying SOCAR historical documents in Azerbaijani*
576
+
577
+ ![LLM Answer Part 2](output/demo_screenshots/llm%20answer%20second%20part.png)
578
+
579
+ *Complete answer with source citations and document references*
580
+
581
+ #### OCR Processing
582
+
583
+ ![OCR Started](output/demo_screenshots/excuting%20started%20for%20ocr.png)
584
+
585
+ *PDF upload and OCR processing initiation*
586
+
587
+ ![OCR Execution](output/demo_screenshots/execution%20ocr%20second%20part.png)
588
+
589
+ *Real-time OCR processing with page-by-page progress*
590
+
591
+ ![OCR Completed](output/demo_screenshots/execution%20completed%20for%20ocr.png)
592
+
593
+ *Completed OCR extraction with formatted markdown output*
594
+
595
+ #### Additional Views
596
+
597
+ ![Second Page](output/demo_screenshots/secondpage.png)
598
+
599
+ *Document selection and upload interface*
600
+
601
+ ![Third Page](output/demo_screenshots/third%20page.png)
602
+
603
+ *Advanced features and settings panel*
604
+
605
+ ---
606
+
607
  ## Key Features
608
 
609
  ### OCR Engine
 
1168
 
1169
  ---
1170
 
 
 
 
 
 
 
1171
  ## Acknowledgments
1172
 
1173
  - **SOCAR** - State Oil Company of Azerbaijan Republic
 
1178
 
1179
  ---
1180
 
 
 
 
 
 
 
 
 
 
 
1181
  *Last Updated: December 14, 2025*