ocr extract

This commit is contained in:
Claude Agent
2026-01-07 14:34:07 +00:00
parent 22eca953ce
commit cc98d6f21f
24 changed files with 774 additions and 2346 deletions

View File

@@ -576,6 +576,7 @@ class ReceiptExtractor:
print(f"[TVA Reverse Validation] {msg}", flush=True)
# Cross-validate amount using payment methods and TVA
original_amount = result.amount
validated_amount, validated_confidence, source = self._cross_validate_and_calculate_amount(
result.amount,
result.confidence_amount,
@@ -583,8 +584,38 @@ class ReceiptExtractor:
result.tva_entries,
result.tva_total
)
if validated_amount != result.amount:
print(f"[Cross-Validation] Amount updated: {result.amount} -> {validated_amount} (source: {source})", flush=True)
# Add validation warnings when TOTAL is calculated (not directly extracted)
if 'calculated from TVA' in source:
warning_msg = f"TOTAL ({validated_amount}) calculat din TVA (nu a fost extras direct din bon)"
result.validation_warnings.append(warning_msg)
print(f"[Cross-Validation] ⚠️ {warning_msg}", flush=True)
# Add comparison if original was different
if original_amount and original_amount != validated_amount:
diff = abs(float(validated_amount) - float(original_amount))
result.validation_warnings.append(
f"TOTAL extras ({original_amount}) diferă de cel calculat ({validated_amount}) cu {diff:.2f} RON"
)
elif 'calculated from payment methods' in source:
warning_msg = f"TOTAL ({validated_amount}) calculat din suma metodelor de plată (nu a fost extras direct)"
result.validation_warnings.append(warning_msg)
print(f"[Cross-Validation] ⚠️ {warning_msg}", flush=True)
if original_amount and original_amount != validated_amount:
diff = abs(float(validated_amount) - float(original_amount))
result.validation_warnings.append(
f"TOTAL extras ({original_amount}) diferă de suma plăților ({validated_amount}) cu {diff:.2f} RON"
)
elif source == 'not found':
result.validation_warnings.append("TOTAL nu a fost detectat și nu a putut fi calculat")
print("[Cross-Validation] ⚠️ TOTAL nu a fost detectat", flush=True)
elif validated_amount != original_amount:
print(f"[Cross-Validation] Amount updated: {original_amount} -> {validated_amount} (source: {source})", flush=True)
result.amount = validated_amount
result.confidence_amount = validated_confidence