Ontbrekende velden en nulvelden zijn twee verschillende fouten.

"Veld niet gevonden" en "Veld is een nulwaarde" kunnen beide leeg verschijnen op de interface, maar ze mogen niet met elkaar worden verward nadat ze het programma hebben geopend. Vul vervolgens de lege plekken in met het cijfer nul, en het probleem zal subtieler zijn: de stroomafwaartse krijgt een juridische waarde, maar denkt dat deze uit de originele tekst komt.

Als het veld niet wordt gevonden of als het veld een nulwaarde heeft, wordt er mogelijk alleen een spatie weergegeven op de interface, maar de betekenis is compleet anders na het openen van het programma. Als het lege vakje vervolgens wordt opgevuld met het cijfer nul, krijgt de stroomafwaarts een juridische waarde, maar denkt ten onrechte dat het uit de originele tekst komt, waardoor het probleem moeilijker te vinden is.

Dit artikel is bedoeld voor ontwikkelaars en documentwerkers die de extractieresultaten ter verwerking aan programma's moeten overdragen. Er wordt uitgelegd hoe u JSON Schema kunt gebruiken om drie statussen te onderscheiden en hoe u verschillende invoervoorbeelden kunt gebruiken om regressiecontroles uit te voeren. Nadat u dit heeft gelezen, kunt u de grenzen voor ontbrekende, null- en nulwaarden voor uw eigen dataprotocol instellen.

De voorbeelden in dit artikel zijn synthetische gegevens en de code is gecontroleerd aan de hand van voorbeelden in een geïsoleerde omgeving, maar dit vormt geen garantie voor alle echte bestanden of producteffecten. Voordat u belangrijke documenten verwerkt, dient u de originelen te bewaren en deze te controleren op basis van de grenzen en acceptatie-items in de tekst.

Eén zin conclusie

Het veld ontbreekt, de waarde is null en de waarde is 0. Er moeten drie verschillende statussen zijn. Het contract moet gebruik maken van het bestaan van de sleutel en het waardetype om ze te scheiden. Het kan niet vertrouwen op interface- of stroomafwaartse gissingen.

jouw situatieAanbevolen praktijkenreden
Moet bevestigen of de uitvoerstructuur voltooid isControleer of de sleutel bestaat met requiredOntbrekende sleutels geven aan dat de uitvoerstructuur onvolledig is en niet gelijk is aan nul.
Geen bedrag beschikbaar in het originele artikelStel de waarde in op nullnull betekent dat er geen beschikbare waarde is verkregen en mag niet met 0 worden gevuld
De originele tekst vermeldt expliciet nulGebruik waarde 0Nul is een ondubbelzinnige waarde, in tegenstelling tot ontbrekende en nulwaarden
Er moet worden uitgelegd waarom er niet wordt geëxtraheerdVoeg een extra veld status of reason toe en definieer toegestane waardenVermijd het spellen van de reden in de hoeveelheidreeks om de downstream-demontage te verminderen

Scheid eerst de drie staten

In het samenstellingscontract van dit artikel moet amount aanwezig zijn, numerieke waarden of null zijn toegestaan. De betekenis van de drie toestanden is als volgt:

  • Geen amount-sleutel: de uitvoerstructuur is onvolledig en vormt een contractuitzondering.
  • amount voor null: de sleutel bestaat, maar er is momenteel geen bedrag beschikbaar.
  • amount is 0: er is een ondubbelzinnige nulwaarde.

Andere protocollen kunnen voor echte zaken worden gebruikt, maar ze moeten duidelijk geschreven zijn en mogen niet aan elke beller worden overgelaten om te raden.

required van JSON Schema is verantwoordelijk voor het controleren of de sleutel bestaat, en type is verantwoordelijk voor het controleren van het type waarde. Twee veel voorkomende misvattingen vereisen speciale aandacht:

  • Alleen het schrijven van required schakelt null niet automatisch uit.
  • Alleen het veld is gedefinieerd in properties en hoeft niet te verschijnen.

Beide punten zijn geschikt om rechtstreeks in regressietests te schrijven. Voor de volledige definitie van objecten en required verwijzen wij u naar JSON Schema-objecten en vereist.

Controleer het contract met vier invoergegevens

from jsonschema import Draft202012Validator

schema = {"type": "object", "required": ["amount"],
          "properties": {"amount": {"type": ["number", "null"]}},
          "additionalProperties": False}
validator = Draft202012Validator(schema)
valid = lambda value: not list(validator.iter_errors(value))

assert valid({"amount": None})
assert valid({"amount": 0})
assert not valid({})
assert not valid({"amount": "unknown"})
assert not valid({"amount": None, "guessed": True})

jsonschema moet worden geïnstalleerd voordat het wordt uitgevoerd. Deze code voert alleen een structuurcontrole uit in het geheugen, roept niet het extractiemodel aan en kan niet bewijzen dat een bepaald bedrag consistent is met de originele tekst.

Als het bedrag een nauwkeurige decimale weergave vereist, kan in plaats daarvan het decimale tekenreeksprotocol worden gebruikt. Beschouw binaire drijvende-kommaberekeningen niet alleen als een financiële oplossing, alleen maar omdat het voorbeeld number gebruikt.

De interface moet ook de status duidelijk vermelden.

Het display op de interface moet ook onderscheid maken tussen toestanden, anders zullen gebruikers verschillende betekenissen verkeerd interpreteren als hetzelfde resultaat.

gegevensDe staat die tot uitdrukking moet worden gebrachtmag niet worden weergegeven als
Geen bedragsleutelUitzondering voor outputcontractenBedrag is nul
bedrag is nulEr is geen beschikbare waarde verkregenExtractie succesvol
bedrag bedraagt 0heeft een duidelijke nulwaardeOntbreekt
bedrag is een onbekende stringNiet in overeenstemming met dit contractAutomatisch geconverteerd naar nul en geruisloos doorgegeven

Voer geen ontbrekende redenen in numerieke velden in

Als u onderscheid moet maken tussen "oorspronkelijke tekst niet opgegeven", "afbeelding onleesbaar", "kandidaatconflict", enz., kunt u een extra veld status of reason toevoegen en daarvoor toegestane waarden definiëren.

Schrijf de reden niet in een bedragreeks en laat de stroomafwaartse stroomafwaarts de cijfers eruit halen. Onbekend is niet hetzelfde als mislukt: sommige documenten hebben dit veld niet en het juiste resultaat is om het onbekend te laten.

📊 Kernvergelijking

staatBestaat de sleutel?waardebetekenis
OntbreektNeegeenDe uitvoerstructuur is onvolledig
nulwaardeJanullEr zijn momenteel geen beschikbare waarden
nul waardeJa0expliciete waarde nul

🎯 Welke methode is geschikt voor jou?

Als u wilt controleren of de interface-uitvoer voltooid is

Gebruik required om te controleren of de sleutel bestaat. Een ontbrekende sleutel wordt direct beschouwd als een contractuitzondering.

Als uw document vaak geen bepaald veld heeft

Laat deze veldwaarde null zijn en specificeer de reden met status of reason.

Als het bedrag nauwkeurig moet worden berekend

Overweeg het decimale tekenreeksprotocol en vertrouw niet rechtstreeks op binaire floats.

Als u na extractie een vertaling of verificatie wilt uitvoeren

Controleer de valuta, herkomst en bijbehorende labels samen om er zeker van te zijn dat de sleutelnummers niet per ongeluk zijn gewijzigd.

❓ Veelgestelde vragen (FAQ)

1. Als u alleen verplicht schrijft, betekent dit dan dat null verboden is?

Nee. required controleert alleen of de sleutel bestaat, het uitschakelen van null moet apart worden gedefinieerd in type.

2. Wat is het verschil tussen een veld dat nul is en een veld dat 0 is?

null betekent dat er momenteel geen waarde beschikbaar is, 0 is een ondubbelzinnige waarde. Beide moeten respectievelijk in het contract en de interface vertegenwoordigd zijn.

3. Betekent legale JSON dat het extractieresultaat accuraat is?

Betekent niet. Structurele inspectie kan alleen bevestigen dat het formaat consistent is met het contract, maar kan niet bewijzen dat het bedrag consistent is met de originele tekst.

4. Kan het veld direct als 0 worden weergegeven als het ontbreekt?

Niet aanbevolen. Ontbrekend betekent dat de uitvoerstructuur onvolledig is. Als u 0 invult, zal de stroomafwaartse stroom dit als het werkelijke bedrag behandelen.

📝 Samenvatting

Ontbrekende, nul- en nulwaarden hebben hun eigen betekenis en moeten afzonderlijk worden uitgedrukt via contracten en interfaces. Nadat de structuur is goedgekeurd, moeten de valuta, de bron en het bijbehorende label van het bedrag nog worden gecontroleerd.

Probeer het nu: upload het document om de vertaling te starten, waarbij de oorspronkelijke lay-out behouden blijft

Bijgewerkt op 2026-11-13