Ein OCR-basierter Marktplatz-Tracker für Black Desert Online. Das Projekt nimmt Screenshots des Marktfensters, führt Game-UI-optimierte Vorverarbeitung und OCR (EasyOCR / optional PaddleOCR / Tesseract) aus, parsed erkannte Log-Zeilen, wendet Heuristiken und Fuzzy-Korrekturen an und persistiert gefundene Transaktionen in einer lokalen SQLite-Datenbank.
Dieses Repository enthält eine einfache Tkinter-GUI (gui.py) zur Live-Überwachung, Export-Funktionen (CSV/JSON) sowie mehrere Hilfs- und Diagnoseskripte unter scripts/.
- Primäre Programmsprache: Python 3.10–3.13
- Haupt-Einstiegspunkt (GUI):
python gui.py - Datenbank:
bdo_tracker.db(SQLite, liegt im Repo für Entwicklung) - Primäre OCR-Engine: EasyOCR (default). Tesseract als Fallback. PaddleOCR optional (nicht standardmäßig aktiviert wegen Latenz).
- Live-Detection von Markt-Transaktionen (buy/sell)
- Multi-Engine OCR-Strategie mit Game-UI-spezifischer Vorverarbeitung
- Persistente Baseline und Deduplication-Logik, um doppelte Ereignisse zu vermeiden
- Config/Region-Kalibrierung, Auto-Track-Modus, Einzel-Scan
- Export als CSV / JSON aus der GUI
- Debug-artefakte:
debug_orig.png,debug_proc.pngundocr_log.txt
- Windows 10+ (getestet)
- Python 3.10 bis 3.13
- Empfohlene Python-Pakete (siehe
requirements.txt): EasyOCR, pytesseract, opencv-python, numpy, Pillow, mss, pandas, matplotlib, rapidfuzz, requests - Optional: Tesseract-OCR (System-Installer), CUDA + cuDNN für GPU-Beschleunigung (nur wenn
USE_GPUgesetzt)
Installation (empfohlen in einem virtuellen Environment):
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txtHinweis: Tesseract muss gesondert installiert werden, wenn Sie die Tesseract-Fallback-Engine nutzen wollen. EasyOCR lädt Modelle beim ersten Start automatisch herunter.
- Spiel starten und das Marktfenster öffnen (Buy- oder Sell-Übersicht).
python gui.pystarten.- Region anpassen (Standardregion ist im
config.pyvoreingestellt). Alternativ im GUI auf "Auswahl" klicken und zwei Punkte im Bildschirm markieren. - "Einmal scannen" zum Testen oder "Auto-Tracking starten" aktivieren.
gui.py— Tkinter GUI und Export-Funktionentracker.py— Kern-Logik: Capture, OCR-Integration, Parsing, Heuristiken, Persistenzparsing.py— Muster/Parser für die Spiel-Logsdatabase.py— SQLite-Wrapper und Hilfsfunktionenmarket_json_manager.py— Item-Korrektur (RapidFuzz + lokale Cache)bdo_api_client.py— Live-Preis-Checks (optional)config.py— zentrale Konfigurationswerte & persistent settings helpersscripts/— Hilfs- und Test-Skripte (z. B.scripts/utils/reset_db.py)
Automatisierte Unit-Tests befinden sich in tests/unit/. Es gibt auch manuelle Replays unter tests/manual/.
Kurzer Testlauf:
python scripts/run_all_tests.pyFür gezielte Tests (Beispiele):
python tests/unit/test_parsing_crystal.py
python tests/unit/test_collect_anchor.pyEs gibt pyinstaller-Spezifikationen unter pyinstaller/ und ein Powershell-Packaging-Skript PackagingScript.ps1. Use the specs pyinstaller/market_tracker_cpu.spec or market_tracker_cuda.spec depending on whether you package for GPU-support.
Wichtige Hinweise beim Packaging:
- Wenn GPU-Unterstützung aktiviert wird, stellen Sie sicher, dass Zielsystem CUDA/Driver-kompatibel ist.
- Prüfen Sie
config.TESS_PATHfalls Tesseract verwendet wird. - Behalten Sie
bdo_tracker.dbundconfig/Dateien im Paket oder dokumentieren Sie, wie sie initialisiert werden.
- OCR-Probleme:
ocr_log.txtprüfen,debug_orig.pngvs.debug_proc.pngvergleichen. Verwenden Siescripts/utils/compare_ocr.py. - Parsing-Probleme: Unit-Tests in
tests/unit/ausführen. Aktivieren SieDebug-Modusin der GUI. - DB-Probleme:
inspect_db.pyodercheck_db.pylaufen lassen.scripts/utils/reset_db.pysetzt Entwicklungs-DB zurück.
- Fokus-Guard: Nur scannen, wenn das Spiel-Fenster aktiv ist (konfiguriert in
config.py). - ROI: Standard-Region wird auf Top ~75% des Marktfensters getrimmt; Anpassungen nur über
scripts/utils/calibrate_region.py. - OCR-Cache: Screenshot-MD5-Caching aktiv (siehe
utils.py) — nicht deaktivieren. - Item-Whitelist & Korrektur: Items laufen durch
market_json_manager.correct_item_name(RapidFuzz-Schwelle konfigurierbar). - Quantity-Bounds: 1..5000 (Filter für UI-Rauschen).
Siehe AGENTS.md für die internen Richtlinien, Architektur-Notes und die Betriebsanleitung. Änderungen an Kernparametern (ROI, Polling, Cache-Policy) müssen mit reproduzierbaren Metriken dokumentiert werden (siehe docs/).
Wenn Sie etwas anpassen, führen Sie die vorhandenen Unit-Tests aus und fügen Sie weitere Tests hinzu, wenn sich das Verhalten ändert.
Version: aktualisiert am 2025-10-18