polish: stats hero, absolute image URLs, improved frontmatter (datasets, base_model, langs, new_version)
Browse files
README.md
CHANGED
|
@@ -38,59 +38,85 @@ new_version: Keyven/german-ocr-3
|
|
| 38 |
---
|
| 39 |
|
| 40 |
<p align="center">
|
| 41 |
-
<img src="https://app.german-ocr.de/icon.png" alt="German-OCR-3" width="
|
| 42 |
</p>
|
| 43 |
|
| 44 |
<h1 align="center">German-OCR-3</h1>
|
| 45 |
|
| 46 |
-
<p align="center"><strong>Deutsche Vision-OCR. Kompakt. Lokal. Open Source.</strong></
|
|
|
|
| 47 |
|
| 48 |
<p align="center">
|
| 49 |
-
<a href="https://german-ocr.de"><img alt="Site" src="https://img.shields.io/badge/site-german--ocr.de-3B82F6?style=flat-square"/></a>
|
| 50 |
-
<a href="https://ollama.com/Keyvan/german-ocr-3"><img alt="Ollama" src="https://img.shields.io/badge/Ollama-Keyvan%2Fgerman--ocr--3-
|
| 51 |
-
<a href="https://github.com/Keyvanhardani/German-OCR-3-Dev"><img alt="GitHub" src="https://img.shields.io/badge/GitHub-source-
|
| 52 |
-
<a href="
|
|
|
|
|
|
|
| 53 |
</p>
|
| 54 |
|
| 55 |
---
|
| 56 |
|
| 57 |
-
##
|
| 58 |
|
| 59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
|
| 61 |
-
|
| 62 |
|
| 63 |
-
|
| 64 |
-
|---|---:|---|---|
|
| 65 |
-
| **`Keyvan/german-ocr-nano`** | **1.0 GB** | CPU / Edge / Mobile | „läuft überall" |
|
| 66 |
-
| **`Keyvan/german-ocr-3` ⭐** | **2.7 GB** | 4–6 GB VRAM | empfohlene Default-Edition |
|
| 67 |
|
| 68 |
-
|
| 69 |
|
| 70 |
-
|
|
|
|
|
|
|
| 71 |
|
| 72 |
-
|
|
|
|
|
|
|
|
|
|
| 73 |
|
| 74 |
-
|
| 75 |
-
* `Aoschu/German_invoices_dataset_for_donut` — 129 echte deutsche Rechnungen (Donut-Format)
|
| 76 |
-
* **Eigenes synthetisches DE-Rechnungs-Set** — 100 Rechnungen mit Golden-JSON, deterministisch generiert (`eval/fixtures/synth_de_invoices/`)
|
| 77 |
-
* **Anonymisierter DACH-Praxistest** — echte Rechnungen verschiedener DACH-Anbieter, intern, nicht im Repo (DSGVO)
|
| 78 |
|
| 79 |
---
|
| 80 |
|
| 81 |
-
##
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
|
| 83 |
-
|
| 84 |
|
| 85 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
|
| 87 |
-
|
| 88 |
|
| 89 |
-
|
|
|
|
|
|
|
| 90 |
|
| 91 |
---
|
| 92 |
|
| 93 |
-
## Quickstart
|
| 94 |
|
| 95 |
### Ollama (empfohlen, eine Zeile)
|
| 96 |
|
|
@@ -99,7 +125,8 @@ ollama pull Keyvan/german-ocr-3
|
|
| 99 |
ollama run Keyvan/german-ocr-3 "Extrahiere die Rechnung im Bild als JSON." ./meine_rechnung.png
|
| 100 |
```
|
| 101 |
|
| 102 |
-
|
|
|
|
| 103 |
|
| 104 |
```json
|
| 105 |
{
|
|
@@ -131,6 +158,8 @@ Erwartetes Ergebnis (echter Output):
|
|
| 131 |
}
|
| 132 |
```
|
| 133 |
|
|
|
|
|
|
|
| 134 |
### Python (via Ollama HTTP API)
|
| 135 |
|
| 136 |
```python
|
|
@@ -166,40 +195,66 @@ llama-cli -m ./german-ocr-3/german-ocr-3-Q4_K_M.gguf \
|
|
| 166 |
|
| 167 |
---
|
| 168 |
|
| 169 |
-
##
|
| 170 |
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 174 |
|
| 175 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 176 |
|
| 177 |
> 🌐 **[german-ocr.de](https://german-ocr.de)** — gehostete deutsche OCR-API mit Premium-Modellen, höherer Genauigkeit, ohne eigene Hardware. Daten bleiben in der EU.
|
| 178 |
|
| 179 |
-
|
| 180 |
|
| 181 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 182 |
|
| 183 |
-
|
|
|
|
|
|
|
| 184 |
|
| 185 |
German-OCR-3 baut auf der hervorragenden Arbeit des **Qwen-Teams bei Alibaba Group** auf. Die zugrundeliegende Vision-Language-Architektur stammt aus der **Qwen 3.5 Small Series**, veröffentlicht unter Apache License 2.0. Ohne die offene Forschung und die saubere Veröffentlichung der Qwen-Weights wäre dieses Projekt nicht möglich.
|
| 186 |
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
|
| 191 |
Vollständiger Attribution-Text in [`NOTICE`](NOTICE).
|
| 192 |
|
| 193 |
-
|
| 194 |
|
| 195 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
|
| 197 |
```bibtex
|
| 198 |
@misc{german_ocr_3_2026,
|
| 199 |
title = {German-OCR-3: A compact German document-OCR distribution},
|
| 200 |
author = {Hardani, Keyvan},
|
| 201 |
year = {2026},
|
| 202 |
-
url = {https://github.com/Keyvanhardani/German-OCR}
|
| 203 |
}
|
| 204 |
|
| 205 |
@misc{qwen35_2026,
|
|
@@ -216,4 +271,14 @@ Wenn du German-OCR-3 in Forschung oder Produktion verwendest, zitiere bitte beid
|
|
| 216 |
journal = {arXiv preprint arXiv:2502.13923},
|
| 217 |
year = {2025}
|
| 218 |
}
|
| 219 |
-
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
---
|
| 39 |
|
| 40 |
<p align="center">
|
| 41 |
+
<img src="https://app.german-ocr.de/icon.png" alt="German-OCR-3" width="140" height="140" />
|
| 42 |
</p>
|
| 43 |
|
| 44 |
<h1 align="center">German-OCR-3</h1>
|
| 45 |
|
| 46 |
+
<p align="center"><strong>Deutsche Vision-OCR. Kompakt. Lokal. Open Source.</strong><br/>
|
| 47 |
+
<sub>Aus deutschem Dokument-Bild → strikt validiertes JSON. In unter 60 Sekunden lokal lauffähig.</sub></p>
|
| 48 |
|
| 49 |
<p align="center">
|
| 50 |
+
<a href="https://german-ocr.de"><img alt="Site" src="https://img.shields.io/badge/site-german--ocr.de-3B82F6?style=flat-square&labelColor=0B1220"/></a>
|
| 51 |
+
<a href="https://ollama.com/Keyvan/german-ocr-3"><img alt="Ollama" src="https://img.shields.io/badge/Ollama-Keyvan%2Fgerman--ocr--3-F59E0B?style=flat-square&labelColor=0B1220"/></a>
|
| 52 |
+
<a href="https://github.com/Keyvanhardani/German-OCR-3-Dev"><img alt="GitHub" src="https://img.shields.io/badge/GitHub-source-181717?style=flat-square&labelColor=0B1220"/></a>
|
| 53 |
+
<a href="#license"><img alt="License: Apache 2.0" src="https://img.shields.io/badge/License-Apache_2.0-22C55E?style=flat-square&labelColor=0B1220"/></a>
|
| 54 |
+
<img alt="Language" src="https://img.shields.io/badge/lang-Deutsch-3B82F6?style=flat-square&labelColor=0B1220"/>
|
| 55 |
+
<img alt="Hallucination" src="https://img.shields.io/badge/Halluzination-0%25-22C55E?style=flat-square&labelColor=0B1220"/>
|
| 56 |
</p>
|
| 57 |
|
| 58 |
---
|
| 59 |
|
| 60 |
+
## ⚡ At a glance
|
| 61 |
|
| 62 |
+
<table align="center">
|
| 63 |
+
<tr>
|
| 64 |
+
<td align="center" width="180"><h2>100 %</h2><sub>Gültiges JSON</sub></td>
|
| 65 |
+
<td align="center" width="180"><h2>95 %</h2><sub>Sender korrekt</sub></td>
|
| 66 |
+
<td align="center" width="180"><h2>0 %</h2><sub>Halluzination</sub></td>
|
| 67 |
+
<td align="center" width="180"><h2>5.0 s</h2><sub>Latenz / Doc</sub></td>
|
| 68 |
+
</tr>
|
| 69 |
+
</table>
|
| 70 |
|
| 71 |
+
<p align="center"><sub>Auf <strong>200+ echten anonymisierten deutschen Rechnungen</strong> (Default-Edition, 2.7 GB)</sub></p>
|
| 72 |
|
| 73 |
+
---
|
|
|
|
|
|
|
|
|
|
| 74 |
|
| 75 |
+
## Was ist German-OCR-3?
|
| 76 |
|
| 77 |
+
**German-OCR-3** ist eine kompakte, schnelle und voll lokal lauffähige **Vision-OCR-Distribution für deutsche Geschäftsdokumente** — Rechnungen, Briefe, Formulare, Quittungen, Bescheide. Aus dem Bild kommt **strikt validiertes JSON** nach unserem deutschen Extraktions-Schema. Ohne Cloud-Pflicht, ohne Vendor-Lock-in.
|
| 78 |
+
|
| 79 |
+
Zwei Editionen, beide Apache 2.0, beide unter 3 GB:
|
| 80 |
|
| 81 |
+
| Edition | Ollama | Größe | Zielhardware | Stärke |
|
| 82 |
+
|---|---|---:|---|---|
|
| 83 |
+
| **Nano** | `Keyvan/german-ocr-nano` | **1.0 GB** | CPU · Edge · Mobile | „läuft überall" |
|
| 84 |
+
| **Default** ⭐ | `Keyvan/german-ocr-3` | **2.7 GB** | 4–6 GB VRAM | beste Field-Erkennung |
|
| 85 |
|
| 86 |
+
> **Fine-tuned adapter** für deutsche Geschäftsdokument-Extraktion. Apache 2.0.
|
|
|
|
|
|
|
|
|
|
| 87 |
|
| 88 |
---
|
| 89 |
|
| 90 |
+
## 📊 Praxistest — 200+ echte deutsche Rechnungen (anonymisiert)
|
| 91 |
+
|
| 92 |
+
<p align="center">
|
| 93 |
+
<img src="https://huggingface.co/Keyven/german-ocr-3/resolve/main/charts/02_ionos_validity.png" alt="Praxistest" width="820"/>
|
| 94 |
+
</p>
|
| 95 |
+
|
| 96 |
+
| Edition | Valid JSON | Sender korrekt | **Halluzination** | Latenz |
|
| 97 |
+
|---|---:|---:|---:|---:|
|
| 98 |
+
| `Keyvan/german-ocr-nano` | 84 % | 79 % | **0 %** | 6.6 s |
|
| 99 |
+
| **`Keyvan/german-ocr-3`** ⭐ | **100 %** | **95 %** | **0 %** | **5.0 s** |
|
| 100 |
|
| 101 |
+
**Keine "Mustermann"-Defaults.** German-OCR-3 liest echte Firma, Kundenadresse, Produkte, Beträge — statt zu raten.
|
| 102 |
|
| 103 |
+
---
|
| 104 |
+
|
| 105 |
+
## 📐 Größenvergleich
|
| 106 |
+
|
| 107 |
+
<p align="center">
|
| 108 |
+
<img src="https://huggingface.co/Keyven/german-ocr-3/resolve/main/charts/01_size_vs_competitors.png" alt="Modellgrößen" width="820"/>
|
| 109 |
+
</p>
|
| 110 |
|
| 111 |
+
`german-ocr-3` (2.7 GB) ist **6× kleiner** als ein typischer 7B-OCR-VLM. Läuft auf einer **8 GB-Gaming-GPU** oder über CPU auf einem normalen Laptop.
|
| 112 |
|
| 113 |
+
<p align="center">
|
| 114 |
+
<img src="https://huggingface.co/Keyven/german-ocr-3/resolve/main/charts/04_latency.png" alt="Latenz" width="620"/>
|
| 115 |
+
</p>
|
| 116 |
|
| 117 |
---
|
| 118 |
|
| 119 |
+
## 🚀 Quickstart
|
| 120 |
|
| 121 |
### Ollama (empfohlen, eine Zeile)
|
| 122 |
|
|
|
|
| 125 |
ollama run Keyvan/german-ocr-3 "Extrahiere die Rechnung im Bild als JSON." ./meine_rechnung.png
|
| 126 |
```
|
| 127 |
|
| 128 |
+
<details>
|
| 129 |
+
<summary><b>Beispiel-Output (anonymisiert, aus Praxistest)</b> — klicken zum Aufklappen</summary>
|
| 130 |
|
| 131 |
```json
|
| 132 |
{
|
|
|
|
| 158 |
}
|
| 159 |
```
|
| 160 |
|
| 161 |
+
</details>
|
| 162 |
+
|
| 163 |
### Python (via Ollama HTTP API)
|
| 164 |
|
| 165 |
```python
|
|
|
|
| 195 |
|
| 196 |
---
|
| 197 |
|
| 198 |
+
## 📚 Trainings- und Evaluations-Datensätze
|
| 199 |
|
| 200 |
+
| Datensatz | Umfang | Typ |
|
| 201 |
+
|---|---|---|
|
| 202 |
+
| [`neuralabs/german-synth-ocr`](https://huggingface.co/datasets/neuralabs/german-synth-ocr) | 4 500+ | Deutsche OCR-Samples (synthetisch, Apache-2.0) |
|
| 203 |
+
| [`Aoschu/German_invoices_dataset_for_donut`](https://huggingface.co/datasets/Aoschu/German_invoices_dataset_for_donut) | 129 | Echte deutsche Rechnungen (Donut-Format) |
|
| 204 |
+
| Eigenes synthetisches DE-Rechnungs-Set | 100 | Rechnungen mit Golden-JSON, deterministisch generiert |
|
| 205 |
+
| Anonymisierter DACH-Praxistest | 200+ | Echte Rechnungen verschiedener DACH-Anbieter (intern, DSGVO) |
|
| 206 |
+
|
| 207 |
+
---
|
| 208 |
|
| 209 |
+
## 🎯 Zielgruppen
|
| 210 |
+
|
| 211 |
+
- **Solo-Builder & Indies** — deutsche Dokumente lokal extrahieren, ohne Cloud-OCR-Kosten.
|
| 212 |
+
- **DACH-KMU mit Datenschutz-Anspruch** — lokal / on-prem hosten.
|
| 213 |
+
- **Agenturen & Studios** — Open-Source-Fundament unter der eigenen Pipeline.
|
| 214 |
+
|
| 215 |
+
Wer es **gemanagt** und mit noch größeren Modellen will:
|
| 216 |
|
| 217 |
> 🌐 **[german-ocr.de](https://german-ocr.de)** — gehostete deutsche OCR-API mit Premium-Modellen, höherer Genauigkeit, ohne eigene Hardware. Daten bleiben in der EU.
|
| 218 |
|
| 219 |
+
---
|
| 220 |
|
| 221 |
+
## ⚠️ Limitations
|
| 222 |
+
|
| 223 |
+
- Optimiert für **deutsche** Dokumente — andere Sprachen keine Garantie.
|
| 224 |
+
- Beste Qualität bei klaren, hochauflösenden Scans/Fotos.
|
| 225 |
+
- Handschriftliche Dokumente: nur begrenzt.
|
| 226 |
+
- Bei kritischen Vorgängen (Buchhaltung, Recht): **immer Human-in-the-Loop**.
|
| 227 |
|
| 228 |
+
---
|
| 229 |
+
|
| 230 |
+
## 🙏 Credit & Attribution
|
| 231 |
|
| 232 |
German-OCR-3 baut auf der hervorragenden Arbeit des **Qwen-Teams bei Alibaba Group** auf. Die zugrundeliegende Vision-Language-Architektur stammt aus der **Qwen 3.5 Small Series**, veröffentlicht unter Apache License 2.0. Ohne die offene Forschung und die saubere Veröffentlichung der Qwen-Weights wäre dieses Projekt nicht möglich.
|
| 233 |
|
| 234 |
+
- **Qwen 3.5** — https://huggingface.co/Qwen · https://qwen.ai
|
| 235 |
+
- **Apache License 2.0** (Weights) — © 2025–2026 Qwen Team, Alibaba Group
|
| 236 |
+
- **Qwen2.5-VL Technical Report** — [arXiv:2502.13923](https://arxiv.org/abs/2502.13923)
|
| 237 |
|
| 238 |
Vollständiger Attribution-Text in [`NOTICE`](NOTICE).
|
| 239 |
|
| 240 |
+
---
|
| 241 |
|
| 242 |
+
## <a id="license"></a>📄 License
|
| 243 |
+
|
| 244 |
+
**Apache License 2.0** für die gesamte German-OCR-3-Distribution (Modelfiles, System-Prompt, Schemas, Docs, GGUFs).
|
| 245 |
+
|
| 246 |
+
---
|
| 247 |
+
|
| 248 |
+
## 📑 Citation
|
| 249 |
+
|
| 250 |
+
Wenn du German-OCR-3 in Forschung oder Produktion verwendest, zitiere bitte **beides** — unsere Distribution und die Qwen-Basisarbeit:
|
| 251 |
|
| 252 |
```bibtex
|
| 253 |
@misc{german_ocr_3_2026,
|
| 254 |
title = {German-OCR-3: A compact German document-OCR distribution},
|
| 255 |
author = {Hardani, Keyvan},
|
| 256 |
year = {2026},
|
| 257 |
+
url = {https://github.com/Keyvanhardani/German-OCR-3-Dev}
|
| 258 |
}
|
| 259 |
|
| 260 |
@misc{qwen35_2026,
|
|
|
|
| 271 |
journal = {arXiv preprint arXiv:2502.13923},
|
| 272 |
year = {2025}
|
| 273 |
}
|
| 274 |
+
```
|
| 275 |
+
|
| 276 |
+
---
|
| 277 |
+
|
| 278 |
+
## 👤 Author
|
| 279 |
+
|
| 280 |
+
**Keyvan Hardani**
|
| 281 |
+
· Website: [keyvan.ai](https://keyvan.ai)
|
| 282 |
+
· LinkedIn: [linkedin.com/in/keyvanhardani](https://linkedin.com/in/keyvanhardani)
|
| 283 |
+
· GitHub: [@Keyvanhardani](https://github.com/Keyvanhardani)
|
| 284 |
+
· Hosted Premium: [german-ocr.de](https://german-ocr.de)
|