L'importo può essere un numero negativo: regole aziendali e regole di tipo separate

Scrivi tutti i campi dell'importo come `minimum: 0`, che a prima vista sembra molto rigido, ma bloccherà il normale record di rimborso. Se l'importo sia stato estratto in un numero e se i numeri negativi siano consentiti in questo settore sono due questioni. Dovresti prima confermare il significato del documento e poi scrivere le regole di ambito.

Se stai eseguendo l'estrazione strutturata di ordini, fatture o documenti finanziari, il campo dell'importo è spesso il luogo più soggetto a errori. Molte persone scriveranno tutti gli importi come minimum: 0, il che sembra molto rigido, ma per questo motivo i normali record di rimborso verranno rifiutati.

Se l'importo sia stato estratto in un numero e se i numeri negativi siano consentiti in questo business sono due questioni diverse. Innanzitutto verificare cosa rappresenta il segno negativo nel documento, quindi determinare le regole dell'intervallo, in modo da garantire che il tipo sia corretto senza danneggiare accidentalmente dati ragionevoli.

Questo articolo utilizza campioni sintetici per dimostrare il metodo di elaborazione. Il codice è stato verificato con esempi in un ambiente isolato; ciò non rappresenta una garanzia di tutti i file reali o delle prestazioni del prodotto. Prima di elaborare documenti importanti, conservare gli originali e rivederli rispettando i limiti e gli elementi di accettazione nel testo.

L'importo può essere negativo? Conclusione di una frase

Se l'importo può essere negativo dipende dall'accordo dell'azienda, non dal tipo di campo stesso. Definire prima il significato del segno negativo, quindi lasciare che sia il tipo a determinare i vincoli.

la tua situazionePratiche consigliatemotivo
I rimborsi nel contratto sono espressi come importi negativiIl campo relativo all'addebito è limitato a valori non negativi e per i rimborsi sono consentiti valori negativi.I simboli sono semantica aziendale e non possono essere adatti a tutti
Il sistema utilizza "importo positivo più tipo di rimborso"L'importo è uniformemente positivo e il campo tipo viene utilizzato per distinguere i rimborsiÈ possibile stabilire entrambi i metodi, ma è possibile selezionarne solo uno per la stessa interfaccia.
È richiesto un importo strettamente positivoUtilizzare exclusiveMinimum invece di minimum: 0minimum contiene limiti e passerà valori zero
I segni negativi nelle fonti potrebbero mancare o essere fuori postoSalva il frammento di testo originale e rivedilo manualmente. Non prendere direttamente il valore assoluto.La correzione automatica può mascherare errori reali

Innanzitutto definisci cosa rappresenta il segno negativo

L'accordo di sintesi contenuto in questo articolo prevede che gli oneri ordinari siano non negativi e che i rimborsi siano espressi in importi negativi. I sistemi reali possono anche utilizzare un metodo contabile "importo positivo più tipo di rimborso". È possibile stabilire entrambi i metodi, ma non si può fare affidamento sul fatto che i lettori indovinino nella stessa interfaccia.

Il limite del punto zero qui è un protocollo di esempio e non è uno standard unificato nel settore finanziario.

Lascia che sia il tipo a determinare i vincoli

minimum dello schema JSON contiene confini, exclusiveMinimum non contiene confini. Se il requisito aziendale è strettamente positivo, minimum: 0 non può essere utilizzato.

Elenca gli scenari che consentono valori zero prima di selezionare le parole chiave per evitare di interpretare erroneamente articoli gratuiti, cancellazioni o stime come errori.

from jsonschema import Draft202012Validator

schema = {
    "type": "object", "required": ["kind", "amount"],
    "additionalProperties": False,
    "properties": {"kind": {"enum": ["charge", "refund"]},
                   "amount": {"type": "number"}},
    "allOf": [
        {"if": {"properties": {"kind": {"const": "charge"}}},
         "then": {"properties": {"amount": {"minimum": 0}}}},
        {"if": {"properties": {"kind": {"const": "refund"}}},
         "then": {"properties": {"amount": {"exclusiveMaximum": 0}}}}
    ]
}
v = Draft202012Validator(schema)
valid = lambda x: not list(v.iter_errors(x))
assert valid({"kind": "charge", "amount": 0})
assert valid({"kind": "refund", "amount": -12.5})
assert not valid({"kind": "refund", "amount": 12.5})
assert not valid({"kind": "charge", "amount": True})
assert not valid({"amount": 12.5})

L'esempio dipende da jsonschema ed è verificato secondo Draft 2020-12. Non esegue la conversione della valuta, né verifica la relazione tra voci e totali.

I calcoli valutari richiedono precise strategie di precisione e arrotondamento. Solo perché i valori superano la verifica dello schema, non è possibile utilizzare numeri in virgola mobile per accumularli a piacimento.

Quando si segnala un errore è necessario indicare il contesto aziendale

Quando la verifica fallisce, il messaggio di errore dovrebbe aiutare le persone a determinare la causa, piuttosto che indicare semplicemente "illegale".

OsservazioneEcco come è stato gestitoLa verifica è ancora necessaria
Il rimborso è positivoRifiutoIl simbolo è andato perso, o la sorgente usa un altro protocollo?
Carica zeroAccetta la strutturaChe sia un programma gratuito
La quantità è una stringaTipi di rifiutoMigliaia di luoghi, valuta e regole decimali
Tipo mancanteRifiutoNon indovinare il tipo di documento tramite il simbolo dell'importo

Non usare il valore assoluto automatico per coprire gli errori

L'OCR può mostrare lo stesso tipo di eccezione se manca una breve linea orizzontale, un segno meno viene spostato durante la traduzione, o se l'azienda utilizza convenzioni simboliche opposte.

Se abs() viene chiamato direttamente, vengono eliminati indizi diagnostici importanti. Un approccio più sicuro è salvare il clip di testo originale, il numero di pagina e la stringa di pre-parsing, poi decidere se estrarre di nuovo o rivedere manualmente.

Controlla l'importo e la digitazione insieme alla consegna

Quando si utilizza OmniDoc (Voce prodotto) per elaborare documenti contenenti importi, si può utilizzare questa tabella di regole come parte dell'accettazione post-elaborazione: non solo verificare se mancano numeri, ma anche verificare se il contesto per rimborsi, crediti e altre questioni è cambiato.

Gli strumenti possono aiutare a completare le traduzioni, ma l'accordo sull'importo dovrebbe comunque essere chiarito dal lato business.

📊 Confronto tra i nuclei

MetodoSignificato del segno menoAdatto alla scenaPunti da notare
I rimborsi vengono effettuati con un importo negativoUn segno negativo indica un rimborsoL'accordo stabilisce che le direzioni sono distinte da simboliIl campo addebito deve essere limitato a non negativo, mentre il campo rimborso può essere negativo
Importo positivo più tipo di rimborsoIl segno negativo non ha significato commercialeIl sistema distingue i rimborsi per tipo di campoLa quantità è uniformemente positiva e il tipo deve essere verificato contemporaneamente
minimum: 0Contiene valori zeroImporti consentiti per valore zeroPermette valori zero ed è non adatta a scenari strettamente positivi
exclusiveMinimum: 0I valori zero non sono inclusiSono fissati requisiti rigorosi su quantità positiveAssicurati che gli articoli gratuiti o le annullazioni non vengano rifiutati per errore

🎯 Quale metodo ti si addice?

Se il tuo accordo utilizza un importo negativo per indicare un rimborso

  • Impostare un vincolo non negativo per il campo di addebito, consentire valori negativi per il campo rimborso e specificare l'accordo nella documentazione.

Se il tuo sistema usa "Importo Positivo più Tipo di Rimborso"

  • I campi di quantità vengono unificati in positivi e i campi tipo vengono controllati per evitare di giudicare la natura del documento solo in base ai numeri.

Se l'azienda richiede che l'importo sia strettamente positivo

  • Utilizzare exclusiveMinimum e prima confermare se progetti gratuiti, offset e stime verranno erroneamente rifiutati.

Se il segno negativo nel file sorgente potrebbe mancare

  • Conservare lo snippet originale, il numero di pagina e la stringa di pre-parse, rivedere manualmente prima di entrare nel database e non selezionare direttamente i valori assoluti.

❓ Domande Frequenti (FAQ)

1. Qual è la differenza tra minimum e exclusiveMinimum?

minimum contiene valori al contorno, mentre exclusiveMinimum no. Se i requisiti aziendali sono rigorosi e positivi, minimum: 0 non può essere utilizzato.

2. La quantità è sempre corretta solo perché supera la verifica dello schema?

Non necessariamente. L'esempio non effettua conversione valuta, né verifica la relazione tra sotto-elementi e totali; I calcoli di valuta richiedono anche precisione chiara e strategie di arrotondamento.

3. Perché la quantità non può essere aggiunta direttamente usando numeri in virgola mobile?

I calcoli valutari richiedono precisione chiara e strategie di arrotondamento; non si possono aggiungere arbitrariamente numeri in virgola mobile solo perché i valori superano la verifica dello schema.

4. Se incontri segni negativi anomali, puoi prendere direttamente il valore assoluto?

Non consigliato. Omissioni OCR, traslazioni di segni negativi in movimento o diversi simboli aziendali possono causare anomalie; prendere direttamente valori assoluti elimina indizi diagnostici.

📝 Riassunto

La chiave del campo quantità è prima confermare cosa rappresenta il segno negativo, poi lasciare che il tipo determini il vincolo. Separare le regole aziendali da quelle di tipo per evitare rifiuti errati di rimborso e per non trascurare errori reali.

Esperienza ora: carica il tuo documento per iniziare a tradurre, mantenendo la formattazione originale

Riferimenti: Vincoli numerici dello schema JSON

Aggiornato il 2026-11-14