diff --git a/Changes.md b/Changes.md index 29f069c..18e826c 100644 --- a/Changes.md +++ b/Changes.md @@ -2,6 +2,16 @@ --- +## 2026-04-10 – OCR-Schalter unabhängig vom KI-Schalter + +### Neu +- Einstellungen: separater Schalter „OCR-Texterkennung" (`ocr_aktiv`) zum unabhängigen Ein-/Ausschalten der Tesseract-OCR bei Bildbelegen (Migration 020) +- KI-Schalter und OCR-Schalter arbeiten nun vollständig unabhängig voneinander +- `KontierungsvorschlagService::isOcrEnabled()`: neue Methode, prüft OCR-Einstellung +- Bildbeleg-OCR wird nur noch ausgeführt, wenn `ocr_aktiv = 1`; PDF-Textextraktion via `pdftotext` läuft unabhängig davon + +--- + ## 2026-04-02 – Kontenrahmen: Dokumentation und finale Korrekturen ### Neu diff --git a/migrations/020_ocr_aktiv.sql b/migrations/020_ocr_aktiv.sql new file mode 100644 index 0000000..7cd474d --- /dev/null +++ b/migrations/020_ocr_aktiv.sql @@ -0,0 +1,4 @@ +-- Migration 020: OCR-Schalter in company_settings +ALTER TABLE company_settings + ADD COLUMN IF NOT EXISTS ocr_aktiv TINYINT(1) NOT NULL DEFAULT 1 + COMMENT '1 = automatische OCR-Texterkennung bei Bildbelegen aktiv'; diff --git a/src/Models/Setting.php b/src/Models/Setting.php index 675373f..7bb33ba 100644 --- a/src/Models/Setting.php +++ b/src/Models/Setting.php @@ -29,7 +29,7 @@ class Setting iban=?, bic=?, bank_name=?, ustva_steuernummer=?, ustva_bundesland=?, invoice_nr_prefix=?, beleg_nr_prefix=?, - payment_days_default=?, test_mode=?, ki_vorschlag_aktiv=? + payment_days_default=?, test_mode=?, ki_vorschlag_aktiv=?, ocr_aktiv=? WHERE id=1', [ $data['firma'] ?? '', @@ -53,6 +53,7 @@ class Setting (int)($data['payment_days_default'] ?? 14), isset($data['test_mode']) ? 1 : 0, isset($data['ki_vorschlag_aktiv']) ? 1 : 0, + isset($data['ocr_aktiv']) ? 1 : 0, ] ); } diff --git a/src/Services/KontierungsvorschlagService.php b/src/Services/KontierungsvorschlagService.php index b5c9e87..fe0288d 100644 --- a/src/Services/KontierungsvorschlagService.php +++ b/src/Services/KontierungsvorschlagService.php @@ -23,6 +23,12 @@ class KontierungsvorschlagService return (bool)($s['ki_vorschlag_aktiv'] ?? 0) && $this->llm->isAvailable(); } + public function isOcrEnabled(): bool + { + $s = Setting::get(); + return (bool)($s['ocr_aktiv'] ?? 1); + } + public function generateForBeleg(array $beleg): ?array { $absPath = dirname(__DIR__, 2) . '/public/' . $beleg['storage_path']; @@ -34,7 +40,7 @@ class KontierungsvorschlagService if ($mime === 'application/pdf') { $text = $this->extractPdfText($absPath); } elseif (in_array($mime, ['image/jpeg', 'image/png', 'image/tiff'], true)) { - $text = $this->extractImageText($absPath); + $text = $this->isOcrEnabled() ? $this->extractImageText($absPath) : ''; } else { return null; } diff --git a/src/Views/settings/form.php b/src/Views/settings/form.php index 63cdb42..e1a0b22 100644 --- a/src/Views/settings/form.php +++ b/src/Views/settings/form.php @@ -155,6 +155,23 @@ + +
+
OCR-Texterkennung
+
+ +

+ Bei Belegen im Bildformat (JPEG, PNG, TIFF) wird Tesseract OCR eingesetzt, um den Belegtext + zu extrahieren. Dieser Text wird – sofern der KI-Schalter aktiv ist – an das LLM übergeben. + PDF-Belege werden unabhängig davon per pdftotext ausgelesen. +

+
+
+
Bankdaten