Feature: OCR-Schalter unabhängig vom KI-Schalter (Migration 020)
This commit is contained in:
parent
3281aa402c
commit
fa50de5c48
5 changed files with 40 additions and 2 deletions
10
Changes.md
10
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
|
||||
|
|
|
|||
4
migrations/020_ocr_aktiv.sql
Normal file
4
migrations/020_ocr_aktiv.sql
Normal file
|
|
@ -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';
|
||||
|
|
@ -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,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -155,6 +155,23 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- OCR-Texterkennung -->
|
||||
<div class="card mb-2">
|
||||
<div class="card-header"><div class="card-title">OCR-Texterkennung</div></div>
|
||||
<div class="card-body">
|
||||
<label style="display:flex;align-items:center;gap:.75rem;cursor:pointer;user-select:none">
|
||||
<input type="checkbox" name="ocr_aktiv" value="1"
|
||||
<?= !empty($settings['ocr_aktiv']) ? 'checked' : '' ?>>
|
||||
<span style="font-weight:600">Automatische Texterkennung bei Bildbelegen aktivieren</span>
|
||||
</label>
|
||||
<p class="text-muted text-sm" style="margin:.5rem 0 0 1.75rem">
|
||||
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 <code>pdftotext</code> ausgelesen.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-2">
|
||||
<div class="card-header"><div class="card-title">Bankdaten</div></div>
|
||||
<div class="card-body">
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue