الحقول المفقودة والحقول الفارغة هما فشلان مختلفان.

قد يظهر كل من "الحقل غير موجود" و"الحقل قيمة فارغة" فارغين على الواجهة، ولكن لا ينبغي الخلط بينهما بعد الدخول إلى البرنامج. ثم املأ الفراغات بالرقم صفر، وستكون المشكلة أكثر دقة: يتلقى المصب قيمة قانونية، لكنه يعتقد أنها تأتي من النص الأصلي.

إذا لم يتم العثور على الحقل أو كان الحقل يحتوي على قيمة فارغة، فقد يعرض فقط فراغًا على الواجهة، ولكن المعنى يختلف تمامًا بعد الدخول إلى البرنامج. إذا تم ملء الفراغ بالرقم صفر، فسيحصل المصب على قيمة قانونية، ولكن أعتقد خطأً أنه يأتي من النص الأصلي، مما يجعل العثور على المشكلة أكثر صعوبة.

تستهدف هذه المقالة المطورين والعاملين في مجال التوثيق الذين يحتاجون إلى تسليم نتائج الاستخراج إلى البرامج لمعالجتها. وهو يشرح كيفية استخدام مخطط JSON للتمييز بين ثلاث حالات واستخدام العديد من عينات الإدخال لإجراء اختبارات الانحدار. بعد قراءة هذا، يمكنك تعيين حدود القيم المفقودة والصفرية والصفرية لبروتوكول البيانات الخاص بك.

العينات الواردة في هذه المقالة هي بيانات تركيبية، وقد تم فحص التعليمات البرمجية من خلال أمثلة في بيئة معزولة، ولكن هذا لا يمثل ضمانًا لجميع الملفات الحقيقية أو تأثيرات المنتج. قبل معالجة المستندات المهمة، يرجى الاحتفاظ بالنسخ الأصلية ومراجعتها وفقًا للحدود وبنود القبول في النص.

استنتاج جملة واحدة

الحقل مفقود، والقيمة هي null والقيمة هي 0. يجب أن تكون هناك ثلاث حالات مختلفة. يجب أن يستخدم العقد وجود المفتاح ونوع القيمة للفصل بينهما. لا يمكن الاعتماد على الواجهة أو التخمين النهائي.

حالتكالممارسات الموصى بهاسبب
تحتاج إلى تأكيد ما إذا كان هيكل الإخراج مكتملاًتحقق مما إذا كان المفتاح موجودًا مع requiredتشير المفاتيح المفقودة إلى أن بنية الإخراج غير مكتملة ولا تساوي مقدار الصفر.
لا يوجد مبلغ متاح في المقال الأصلياضبط القيمة على nullnull يعني أنه لم يتم الحصول على قيمة متاحة ويجب عدم ملؤها بالصفر
النص الأصلي يعطي صراحة الصفراستخدم القيمة 0الصفر قيمة لا لبس فيها، على عكس القيم المفقودة والخالية
بحاجة لشرح سبب عدم الاستخراجقم بإضافة حقل status أو reason إضافي وحدد القيم المسموح بهاتجنب تهجئة السبب في سلسلة المبلغ لتقليل التفكيك النهائي

أولاً افصل بين الولايات الثلاث

في عقد تكوين هذه المقالة، يجب أن يكون amount موجودًا، ويُسمح بالقيم الرقمية أو null. ومعاني الحالات الثلاث هي كما يلي:

  • لا يوجد مفتاح amount: بنية الإخراج غير مكتملة وهي استثناء للعقد.
  • amount for null: المفتاح موجود، ولكن لا يوجد مبلغ متاح حاليًا.
  • amount is 0: هناك قيمة صفر لا لبس فيها.

يمكن استخدام بروتوكولات أخرى في الأعمال الحقيقية، ولكن يجب أن تكون مكتوبة بوضوح ولا يمكن تركها لكل متصل ليخمنها.

يعد required الخاص بـ JSON Schema مسؤولاً عن التحقق من وجود المفتاح، ويكون type مسؤولاً عن التحقق من نوع القيمة. هناك مفهومان خاطئان شائعان يتطلبان اهتمامًا خاصًا:

  • مجرد كتابة required لا يؤدي إلى تعطيل null تلقائيًا.
  • يتم تعريف الحقل فقط في properties، ولا يشترط ظهوره.

كلتا هاتين النقطتين مناسبتان للكتابة مباشرة في اختبارات الانحدار. للحصول على التعريف الكامل للكائنات وrequired، يرجى الرجوع إلى كائنات مخطط JSON والمطلوبة.

التحقق من العقد بأربعة مدخلات

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 قبل التشغيل. يقوم هذا الرمز فقط بفحص البنية في الذاكرة، ولا يستدعي نموذج الاستخراج، ولا يمكنه إثبات أن قدرًا معينًا يتوافق مع النص الأصلي.

إذا كان المبلغ يتطلب تمثيلاً عشريًا دقيقًا، فيمكن استخدام بروتوكول السلسلة العشرية بدلاً من ذلك. لا تفكر فقط في حسابات الفاصلة العائمة الثنائية كحل مالي فقط لأن المثال يستخدم number.

يجب أن توضح الواجهة أيضًا الحالة بوضوح.

تحتاج الشاشة الموجودة على الواجهة أيضًا إلى التمييز بين الحالات، وإلا فسوف يسيء المستخدمون تفسير المعاني المختلفة للحصول على نفس النتيجة.

بياناتالحالة التي ينبغي التعبير عنهالا ينبغي أن يتم عرضها كما
لا يوجد مفتاح المبلغاستثناء عقد الإخراجالمبلغ صفر
المبلغ فارغلم يتم الحصول على القيمة المتاحةتم الاستخراج بنجاح
المبلغ هو 0لديه قيمة صفر واضحةمفتقد
المبلغ هو سلسلة غير معروفةغير ملتزم بهذا العقديتم تحويله تلقائيًا إلى قيمة فارغة وتمريره بصمت

لا تقم بإدراج الأسباب المفقودة في الحقول الرقمية

إذا كنت بحاجة إلى التمييز بين "النص الأصلي غير متوفر"، و"الصورة غير قابلة للقراءة"، و"تعارض المرشحين"، وما إلى ذلك، فيمكنك إضافة حقل status أو reason إضافي وتحديد القيم المسموح بها له.

لا تكتب السبب في سلسلة مبلغ ثم تطلب من المصب سحب الأرقام منها. المجهول ليس مثل الفشل: بعض المستندات لا تحتوي على هذا الحقل، والنتيجة الصحيحة هي تركه غير معروف.

📊 المقارنة الأساسية

ولايةهل المفتاح موجود؟قيمةمعنى
مفتقدلالا أحدهيكل الإخراج غير مكتمل
قيمة فارغةنعمnullلا يوجد حاليا أي قيم متاحة
قيمة صفرنعم0القيمة الصريحة صفر

🎯 ما هي الطريقة المناسبة لك؟

إذا كنت بحاجة إلى التحقق من اكتمال إخراج الواجهة

استخدم required للتحقق من وجود المفتاح. يعتبر المفتاح المفقود بمثابة استثناء للعقد بشكل مباشر.

إذا كان المستند الخاص بك في كثير من الأحيان لا يحتوي على حقل معين

اسمح لقيمة الحقل هذه بأن تكون null وحدد السبب باستخدام status أو reason.

إذا كان المبلغ يحتاج إلى حساب دقيق

ضع في اعتبارك بروتوكول السلسلة العشرية ولا تعتمد بشكل مباشر على العوامات الثنائية.

إذا كنت تريد القيام بالترجمة أو التحقق بعد الاستخراج

تحقق من العملة والمصدر والتسميات المقابلة معًا للتأكد من عدم تغيير الأرقام الرئيسية عن طريق الخطأ.

❓ الأسئلة الشائعة (الأسئلة الشائعة)

1. إذا كنت تكتب فقط المطلوب، فهل يعني ذلك أن القيمة null محظورة؟

لا. يتحقق required فقط من وجود المفتاح، أما تعطيل null فيجب تعريفه بشكل منفصل في type.

2. ما الفرق بين الحقل الذي يكون خاليًا والحقل الذي يكون 0؟

null تعني أنه لا توجد قيمة متاحة حاليًا، 0 هي قيمة لا لبس فيها. وينبغي تمثيل كلاهما في العقد والواجهة على التوالي.

3. هل يعني JSON القانوني أن نتيجة الاستخراج دقيقة؟

لا يعني. لا يمكن للتفتيش الهيكلي إلا أن يؤكد أن الشكل يتوافق مع العقد، لكنه لا يستطيع إثبات أن المبلغ يتوافق مع النص الأصلي.

4. هل يمكن عرض الحقل مباشرة كـ 0 عندما يكون مفقودًا؟

غير مستحسن. "مفقود" يعني أن بنية الإخراج غير مكتملة. سيؤدي ملء 0 إلى التعامل مع المصب على أنه المبلغ الحقيقي.

📝 ملخص

القيم المفقودة والصفرية والصفرية لها معانيها الخاصة ويجب التعبير عنها بشكل منفصل من خلال العقود والواجهات. بعد الموافقة على الهيكل، لا يزال يتعين التحقق من العملة والمصدر والملصق المقابل للمبلغ.

جربه الآن: قم بتحميل المستند لبدء الترجمة، مع الاحتفاظ بالتخطيط الأصلي

تاريخ التحديث: 2026-11-13