OCR خارجي في مهام JSON وABI بلغة C
عملية ocr.layer تقبل builtin-ascii وtesseract-cli وtesseract-dll وrapidocr-cli وrapidocr-dll; وإغفال engine يحفظ الافتراضي المدمج ASCII
اكتشاف القدرات يسرد هذه المحولات المدعومة، دون ادعاء تثبيت برامج أو مكتبات أو بيانات لغات أو نماذج ONNX خارجية على جهاز التنفيذ
مثال Tesseract
{"schemaVersion":1,"type":"ocr.layer","pages":[0],"dpi":300,
"minimumConfidence":0.7,"skipPagesWithText":true,"replaceExisting":false,
"engine":"tesseract-cli",
"engineOptions":{"executablePath":"C:/OCR/tesseract.exe",
"tessDataDirectory":"C:/OCR/tessdata","language":"eng",
"pageSegMode":6,"engineMode":3,"timeoutMilliseconds":30000,
"maxPixels":16777216}}
ضع هذا الكائن في مصفوفة operations لمهمة ملف وأضف مسارَي input وoutput، أو مرّره مباشرةً إلى hpdf_document_execute_json_v1 مع مقبض محمَّل وcallbacks ثنائية/نتيجة
| المحرك | engineOptions الإلزامية | engineOptions الاختيارية |
|---|---|---|
| builtin-ascii | لا شيء | engineOptions يجب أن تكون غائبة أو كائنًا فارغًا |
| tesseract-cli | executablePath, tessDataDirectory | language, pageSegMode, engineMode, timeoutMilliseconds, maxPixels |
| tesseract-dll | libraryPath, tessDataDirectory | language, pageSegMode, engineMode, timeoutMilliseconds, maxPixels |
| rapidocr-cli | pythonExecutable, bridgeScript, modelDirectory | detectionModel, recognitionModel, classificationModel, characterDictionary, fontPath, useAngleClassifier, intraOpThreads, interOpThreads, timeoutMilliseconds, maxPixels |
| rapidocr-dll | libraryPath, modelDirectory | language, detectionModel, recognitionModel, classificationModel, characterDictionary, useAngleClassifier, rightToLeft, threads, timeoutMilliseconds, maxPixels |
الخيارات والموارد المحلية
المحركات الخارجية تتطلب engineOptions ذات قيمة كائن صريحة؛ والمفاتيح المجهولة وأنواع JSON الخاطئة والمسارات أو سلاسل اللغات المحتوية NUL والقيم الإلزامية الفارغة تُرفض
Tesseract تقصّر افتراضيًا إلى language=eng وpageSegMode=3 وengineMode=3; وأوضاع التجزئة 0 و2 لا تتعرف نصًا وتُرفضان، بينما بقية الأوضاع حتى 13 مقبولة
engineMode تقبل من 0 إلى 3؛ وملفات البيانات المدرَّبة يجب أن تدعم الوضع المنتقى، وتعبيرات لغات Tesseract متعددة اللغات مثل eng+fra تتطلب النماذج المحلية المقابلة
RapidOCR CLI تستخدم أسماء نماذج THPDFRapidOCROptions.Default الأصلية وتقصّر افتراضيًا كلا حدي الخيوط إلى 1؛ وهي تقبل مسارات قاموس وخط مقدَّمة صراحةً، والجسر المهيأ يجب أن ينفّذ عقد TSV المحلية
RapidOCR DLL تبدأ بـ THPDFRapidOCRDLLOptions.ForLanguage(language) وافتراضيها ch; وملفات اللغة تنتقي نموذج التعرف والقاموس واتجاه القراءة، ويمكن للخيارات الصريحة تجاوز تلك الانتقائيات
أسماء ملفات النماذج تُحل تحت modelDirectory وفق المحولات الأصلية؛ وطول كلمة المكتبة يجب أن يطابق عملية المضيف، بينما يعمل محرك CLI عملية محلية منفصلة
زوّد وانتقِ هذه الموارد صراحةً؛ والعملية لا تثبّت محركات ولا تنزّل نماذج ولا تبحث عن ملفات تنفيذية اعتباطية ولا تستخدم خدمة OCR بعيدة
الميزانيات والإلغاء
timeoutMilliseconds تقصّر افتراضيًا إلى 60,000 وتقبل أعدادًا صحيحة من 1 إلى 3,600,000؛ ومهلة المحول الفعالة مقصوصة بـ budget.timeMilliseconds
maxPixels تقصّر افتراضيًا إلى 16,777,216 وتقبل أعدادًا صحيحة من 1 إلى 67,108,864; وسقفها الفعلي هو الأصغر بين القيمة المطلوبة وbudget.pixels وbudget.memoryBytes / 16
سقف بكسلات المحرك الفعلي يحدّ سقفًا أيضًا لتصيير صفحة OCR قبل التعرف؛ وميزانيات الكلمات والمحتوى والنص UTF-16 مقصوصة بإذن ذاكرة العملية
هذه الحدود تحدد سقوف المخازن المهيأة وموارد العملية؛ وتخصيص نماذج DLL الخارجية لا يشكّل حصة RSS صارمة للعملية
الاستدعاءات الأصلية تستعير Document.OperationCancellationToken للتصيير والتعرف؛ وإلغاء callback بلغة C يُستقصى عند نقاط فحص تعاونية للعملية والإدخال والمخرجات، ويمكن للمحرك الخارجي الجاري مواصلة العمل حتى مهلته أو نقطة فحص callback التالية
فشل CLI محليًا ومخرج TSV غير صالح أو ناقص ومهل المحولات ترفض العملية؛ وحدود الوقت والبكسل للعملية المهيأة تحفظ فئة فشل الميزانية المهيكلة
المخرج وسلوك المعاملة
النتيجة تبلّغ engine وrecognizedPages وskippedPages وacceptedWords وdroppedWords; وحقل engine يحتوي الاسم الوصفي للمحول الأصلي
minimumConfidence يجب أن يكون عددًا من 0 إلى 1، وskipPagesWithText وreplaceExisting يجب أن تكونا قيمتَي JSON منطقيتين
كلمات Unicode المقبولة تصير نصًا خفيًا بخرائط ToUnicode وهندسة الصفحة المصدر؛ وصورة المسح تبقى في المخرج، وملف المصدر يبقى دون تغيير ما لم ينشر المستدعي بقصد إلى مسار الملف نفسه
مهام الملفات تحفظ وجهة قائمة عند الفشل وتنشر عبر ملف staging بنفس المجلد؛ وتحويلات ABI بلغة C تُرسَل بعد نجاح تسليم بايتات PDF ونتيجة JSON معًا، مع تراجع فشل وإهلاك المستدعي للبايتات المسلَّمة سابقًا
القبول
Tests/Delphi/Run-JobOCRTests.ps1 تشغّل أربعة ملفات إرسال محولات وتهيئة مشوهة وميزانيات بكسل ووقت منقضٍ ورفض كلمات جزئية وفشل عملية ومهلة وحفظ وجهة/مصدر على Win32 وWin64
تزويد مسارات Tesseract تنفيذية ونماذج فعلية يمارس التعرف الحي؛ وقراء pypdf وMuPDF مستقلان يتحققان من نص Unicode قابلًا للبحث وبكسلات مسح مرئية دون تغيير، بينما فحص DLL بـ ABI لـ Win64 الاختياري الحقيقي يتحقق من callbacks جزئية وتراجع عملية فاشلة
انظر عمليات المستندات ومحولات Tesseract ونماذج RapidOCR المحلية ومكتبات RapidOCR الأصلية وطبقات نص OCR قابلة للبحث