CoolFace
Modelpublic

keyvan-ai/german-ocr

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
1likes40downloads
Model Card

<p align="center"> <img src="https://app.german-ocr.de/icon.png" alt="German-OCR-3" width="140" height="140" /> </p>

<h1 align="center">German-OCR-3</h1>

<p align="center"><strong>Deutsche Vision-OCR. Kompakt. Lokal. Open Source.</strong><br/> <sub>Aus deutschem Dokument-Bild → strikt validiertes JSON. In unter 60 Sekunden lokal lauffähig.</sub></p>

<p align="center"> <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> <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> <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> <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> <img alt="Language" src="https://img.shields.io/badge/lang-Deutsch-3B82F6?style=flat-square&labelColor=0B1220"/> <img alt="Hallucination" src="https://img.shields.io/badge/Halluzination-0%25-22C55E?style=flat-square&labelColor=0B1220"/> </p>


⚡ At a glance

<table align="center"> <tr> <td align="center" width="180"><h2>100 %</h2><sub>Gültiges JSON</sub></td> <td align="center" width="180"><h2>95 %</h2><sub>Sender korrekt</sub></td> <td align="center" width="180"><h2>0 %</h2><sub>Halluzination</sub></td> <td align="center" width="180"><h2>5.0 s</h2><sub>Latenz / Doc</sub></td> </tr> </table>

<p align="center"><sub>Auf <strong>200+ echten anonymisierten deutschen Rechnungen</strong> (Default-Edition, 2.7 GB)</sub></p>


Was ist German-OCR-3?

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.

Zwei Editionen, beide Apache 2.0, beide unter 3 GB:

EditionOllamaGrößeZielhardwareStärke
NanoKeyvan/german-ocr-nano1.0 GBCPU · Edge · Mobile„läuft überall"
DefaultKeyvan/german-ocr-32.7 GB4–6 GB VRAMbeste Field-Erkennung
Fine-tuned adapter für deutsche Geschäftsdokument-Extraktion. Apache 2.0.

📊 Praxistest — 200+ echte deutsche Rechnungen (anonymisiert)

<p align="center"> <img src="https://huggingface.co/Keyven/german-ocr-3/resolve/main/charts/02ionosvalidity.png" alt="Praxistest" width="820"/> </p>

EditionValid JSONSender korrekt**Halluzination**Latenz
Keyvan/german-ocr-nano84 %79 %0 %6.6 s
`Keyvan/german-ocr-3`100 %95 %0 %5.0 s

Keine "Mustermann"-Defaults. German-OCR-3 liest echte Firma, Kundenadresse, Produkte, Beträge — statt zu raten.


📐 Größenvergleich

<p align="center"> <img src="https://huggingface.co/Keyven/german-ocr-3/resolve/main/charts/01sizevs_competitors.png" alt="Modellgrößen" width="820"/> </p>

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.

<p align="center"> <img src="https://huggingface.co/Keyven/german-ocr-3/resolve/main/charts/04_latency.png" alt="Latenz" width="620"/> </p>


🚀 Quickstart

Ollama (empfohlen, eine Zeile)

bash
ollama pull Keyvan/german-ocr-3
ollama run Keyvan/german-ocr-3 "Extrahiere die Rechnung im Bild als JSON." ./meine_rechnung.png

<details> <summary><b>Beispiel-Output (anonymisiert, aus Praxistest)</b> — klicken zum Aufklappen</summary>

json
{
  "document_type": "invoice",
  "language": "de",
  "invoice_number": "100137xXXXXX",
  "invoice_date": "2024-01-22",
  "due_date": "2024-01-27",
  "sender": {
    "name": "IONOS SE",
    "address": "Elgendorfer Str. 57, 56410 Montabaur",
    "vat_id": "DE81556XXX",
    "iban": null
  },
  "recipient": {
    "name": "Firma e.K.",
    "address": "Muster Straße 32, 80335 München",
    "customer_id": "5835XXX"
  },
  "line_items": [
    {"position": 1, "description": "Mail Business 1 Liz.", "quantity": 1,
     "unit": "Monat", "unit_price_net": 4.20, "amount_net": 4.20, "vat_rate": 19}
  ],
  "amount_net": 4.20,
  "amount_vat": 0.80,
  "amount_total": 5.00,
  "currency": "EUR",
  "notes": ["Entsprechend Ihrem SEPA-Lastschriftmandat ..."]
}

</details>

Python (via Ollama HTTP API)

python
import base64, json, requests
from pathlib import Path

b64 = base64.b64encode(Path("rechnung.png").read_bytes()).decode()
resp = requests.post("http://localhost:11434/api/generate", json={
    "model": "Keyvan/german-ocr-3",
    "prompt": "Extrahiere die Rechnung im Bild als JSON.",
    "images": [b64],
    "stream": False,
    "options": {"temperature": 0, "num_ctx": 32768},
})
data = json.loads(resp.json()["response"])
print(json.dumps(data, indent=2, ensure_ascii=False))

Bundle herunterladen

bash
huggingface-cli download Keyven/german-ocr-3 --local-dir ./german-ocr-3
# Enthält: Modelfile · JSON-Schemas · System-Prompt · GGUF-Quants · Charts

llama.cpp (GGUF direkt)

bash
llama-cli -m ./german-ocr-3/german-ocr-3-Q4_K_M.gguf \
  --system-prompt-file ./german-ocr-3/system_prompt.txt \
  -p "Extrahiere die Rechnung als JSON:" --temp 0

📚 Trainings- und Evaluations-Datensätze

DatensatzUmfangTyp
`neuralabs/german-synth-ocr`4 500+Deutsche OCR-Samples (synthetisch, Apache-2.0)
`Aoschu/German_invoices_dataset_for_donut`129Echte deutsche Rechnungen (Donut-Format)
Eigenes synthetisches DE-Rechnungs-Set100Rechnungen mit Golden-JSON, deterministisch generiert
Anonymisierter DACH-Praxistest200+Echte Rechnungen verschiedener DACH-Anbieter (intern, DSGVO)

🎯 Zielgruppen

  • Solo-Builder & Indies — deutsche Dokumente lokal extrahieren, ohne Cloud-OCR-Kosten.
  • DACH-KMU mit Datenschutz-Anspruch — lokal / on-prem hosten.
  • Agenturen & Studios — Open-Source-Fundament unter der eigenen Pipeline.

Wer es gemanagt und mit noch größeren Modellen will:

🌐 [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.

⚠️ Limitations

  • Optimiert für deutsche Dokumente — andere Sprachen keine Garantie.
  • Beste Qualität bei klaren, hochauflösenden Scans/Fotos.
  • Handschriftliche Dokumente: nur begrenzt.
  • Bei kritischen Vorgängen (Buchhaltung, Recht): immer Human-in-the-Loop.

🙏 Credit & Attribution

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.

  • Qwen 3.5 — https://huggingface.co/Qwen · https://qwen.ai
  • Apache License 2.0 (Weights) — © 2025–2026 Qwen Team, Alibaba Group
  • Qwen2.5-VL Technical ReportarXiv:2502.13923

Vollständiger Attribution-Text in `NOTICE`.


<a id="license"></a>📄 License

Apache License 2.0 für die gesamte German-OCR-3-Distribution (Modelfiles, System-Prompt, Schemas, Docs, GGUFs).


📑 Citation

Wenn du German-OCR-3 in Forschung oder Produktion verwendest, zitiere bitte beides — unsere Distribution und die Qwen-Basisarbeit:

bibtex
@misc{german_ocr_3_2026,
  title  = {German-OCR-3: A compact German document-OCR distribution},
  author = {Hardani, Keyvan},
  year   = {2026},
  url    = {https://github.com/Keyvanhardani/German-OCR}
}

@misc{qwen35_2026,
  title        = {Qwen 3.5 Small Series},
  author       = {{Qwen Team, Alibaba Group}},
  year         = {2026},
  howpublished = {\url{https://huggingface.co/Qwen}},
  note         = {Apache License 2.0}
}

@article{qwen25vl_2025,
  title   = {Qwen2.5-VL Technical Report},
  author  = {{Qwen Team, Alibaba Group}},
  journal = {arXiv preprint arXiv:2502.13923},
  year    = {2025}
}

👤 Author

Keyvan Hardani · Website: keyvan.ai · LinkedIn: linkedin.com/in/keyvanhardani · GitHub: @Keyvanhardani · Hosted Premium: german-ocr.de