Ce n'est pas parce que la date est écrite dans le schéma JSON que le validateur doit vérifier la date.

Le schéma indique `format: date`, mais la mauvaise date passe la vérification. Cela ne signifie pas nécessairement qu'il y a un bug dans la bibliothèque. La manière dont `format` est géré dépend de la configuration du validateur. Lorsque vous obtenez une « vérification réussie », demandez d’abord si elle a vérifié le type, la structure ou également la sémantique de la date.

format: date est écrit dans le schéma JSON, mais une date inexistante réussit la vérification. Ce n'est généralement pas un bug dans la bibliothèque. La façon dont format est géré dépend de la configuration du validateur. Lorsque vous rencontrez un résultat « vérification réussie », vous devez d'abord confirmer si elle vérifie le type, la structure ou vérifie également la sémantique de la date.

Cet article convient aux développeurs et aux réviseurs qui doivent effectuer une vérification structurée des données du document et se soucier de l'exactitude des champs de date. Après avoir lu ceci, vous serez en mesure de déterminer ce que signifie une vérification réussie et d'utiliser des tests de contre-exemple pour corriger les règles de date.

Cet article utilise des échantillons synthétiques pour démontrer la méthode de traitement. Le code a été vérifié avec des exemples dans un environnement isolé et ne constitue pas une garantie de tous les fichiers réels ou des performances du produit. Avant de traiter des documents importants, veuillez conserver les originaux et les examiner en fonction des limites et des éléments d'acceptation du texte.

Que vérifie exactement la vérification de la date de JSON Schema ? Conclusion en une phrase

Confirmez d'abord si la vérification format est activée dans le validateur, puis confirmez si les règles sémantiques de la date (si elle existe réellement et comment l'interpréter) sont autrement responsables.

votre situationPratiques recommandéesraison
Vérifiez uniquement format: date avec le validateur par défautConfirmez d'abord si FormatChecker est explicitement activéLa façon dont format est géré dépend de la configuration du validateur
Besoin d'identifier des dates telles que 2026-02-30Mettez-le dans l'ensemble de test comme contre-exempleLa chaîne ressemble à une date, ce qui ne veut pas dire qu'elle existe sur le calendrier.
L'ordre du jour et du mois de la date source est inconnu.Marquer l'ambiguïté, pas de devinette automatiqueLa réussite de la vérification date ne peut montrer que la valeur convertie est valide
Champs avec heure et fuseau horaireUtiliser des protocoles horaires indépendantsLes dix premiers caractères ne doivent pas être interceptés et traités avec désinvolture
Utilisé pour la vérification de la date de traductionEnregistrez à la fois raw_text et les valeurs normaliséesLes évaluateurs doivent voir à la fois le contenu original et l'explication systématique

Deux contrôles apparemment identiques

2026-02-30 est une chaîne et ressemble à une date, mais il n'y a pas de 30ème jour en février. Seule la vérification des formes régulières permettra de rater ce genre de problème. Ce qui suit utilise jsonschema de Python pour comparer les résultats du validateur par défaut et activer explicitement FormatChecker.

Tester la configuration avec une date impossible

from jsonschema import Draft202012Validator, FormatChecker

schema = {"type": "string", "format": "date"}
structural = Draft202012Validator(schema)
strict = Draft202012Validator(schema, format_checker=FormatChecker())

def valid(v, value):
    return not list(v.iter_errors(value))

assert valid(structural, "2026-02-30")
assert not valid(strict, "2026-02-30")
assert valid(strict, "2024-02-29")
assert not valid(strict, "2025-02-29")
assert not valid(strict, "26/09/2026")
assert not valid(strict, 20260926)

L'exemple synthétique vérifie uniquement date. D'autres formats peuvent avoir des dépendances facultatives ou des différences d'implémentation et doivent être testés au cas par cas dans un environnement verrouillé. Les noms de format inconnus ne peuvent pas être considérés comme signifiant qu'une sorte de vérification a été mise en œuvre, et les fautes d'orthographe peuvent vous donner un sentiment de sécurité inutile.

Le format de date n'est pas une règle d'interprétation de date

03/04/2026 dans la source peut signifier le 4 mars ou le 3 avril. La région source, la spécification du champ ou le protocole explicite sont requis avant de le convertir au format ISO. La réussite de la vérification date peut uniquement prouver que la valeur convertie est valide, mais elle ne peut pas prouver que vous avez sélectionné le bon mois.

Informations sur la sourcece qu'il faut faireCe qu'il ne faut pas faire
Dates de calendrier inexistantesErreur et vérification de la sourceReporté automatiquement au mois suivant
L’ordre du soleil et de la lune est incertainAmbiguïté de la marqueDevinettes basées sur le langage du serveur
Inclut l’heure et le fuseau horaireUtiliser des accords horaires indépendantsCoupe aléatoire des dix premiers caractères
Le champ est videTraité selon la règle manquanteComplétez la date de la journée

Inclure la configuration dans les tests de régression

L’ensemble de test contient au moins trois types de valeurs : un jour bissextile valide, un jour bissextile illégal et une valeur incorrecte. Exécuter ces contre-exemples lors du déploiement est plus efficace que de simplement vérifier si le fichier de schéma existe. Si le service est implémenté entre langages, le même ensemble de tests doit être validé séparément, et le comportement par défaut de deux validateurs ne doit pas être supposé identique.

La revue de traduction conserve la date originale

Lors de l’utilisation du résultat d’extraction de date pour la vérification de la traduction OmniDoc, il est recommandé de sauvegarder à la fois les valeurs de raw_text et celles normalisées. Les évaluateurs doivent voir « quel est le contenu original » et « comment le système l’interprète » pour identifier des différences de traduction, d’extraction ou de conversion de format.

Références : Chaîne et format du schéma JSON.

📊 Comparaison des noyaux

Points de comparaisonValidateur par défautActivez explicitement FormatChecker
Portée de l’inspectionTypes et structureDe plus, vérifiez le format de la déclarationformat
Conclusion sur 2026-02-30Tu ne peux pas supposer que tu seras refuséDes contre-exemples sont nécessaires pour les tests réels afin de confirmer
La signification du passageCela ne signifie pas que la date est sémantiquement correcteIl est toujours nécessaire de vérifier l’explication de la date de la date d’ouverture

🎯 Quelle méthode te convient ?

Si vous devez seulement confirmer que le champ est une corde ou a la bonne structure

Le validateur par défaut est généralement suffisant, mais sachez qu’il ne vérifie pas nécessairement la sémantique des dates.

Si tu dois confirmer que la date existe vraiment

Activez explicitement FormatChecker et vérifiez avec des contre-exemples comme 2026-02-30.

Si tu veux vérifier la date dans le fichier source

D’abord, confirmez les règles sources pour l’ordre jour-mois, puis enregistrez le texte original et les valeurs normalisées.

Si votre service est déployé dans plusieurs langues

Exécutez le même ensemble de tests séparément dans chaque implémentation.

❓ Foire aux questions (FAQ)

1. Le schéma a écrit format: date, alors pourquoi les mauvaises dates peuvent-elles encore passer ?

La gestion de format dépend de la configuration du validateur ; par défaut, la sémantique de la date peut ne pas être vérifiée.

2. Pourquoi 2026-02-30 est-elle une valeur de test utile ?

Cela ressemble à une date, mais février n’a pas de trentième jour. Se concentrer uniquement sur l’apparence manquera ce genre de problèmes.

3. Que se passe-t-il si vous utilisez un nom de format inconnu ?

Il ne faut pas considérer qu’il a été vérifié ; des fautes d’orthographe peuvent vous donner un faux sentiment de sécurité.

4. Comment 03/04/2026 devrait-il être converti ?

La région source, la description du champ ou un accord clair sont requis. Sinon, il est impossible de dire s’il s’agit du 4 mars ou du 3 avril.

📝 Résumé

Passer un contrôle de contrôle signifie seulement que les données respectent les règles déclarées et ne signifie pas que chaque date est correcte. D’abord, confirmez le périmètre d’inspection du validateur, puis fixez le traitement de la date avec des contre-exemples et des règles de source pour des résultats plus fiables.

Faites l’expérience dès maintenant : téléchargez votre document pour commencer à traduire, tout en conservant la mise en forme originale

Mis à jour le 2026-11-13