استخراج النص من PDF باستخدام OCR في C#

نظرة عامة

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

في هذه الحالات، يوفر Aspose.PDF for .NET فئة OcrTextAbsorber (مساحة الاسم Aspose.Pdf.Ocr). تتعرف على النص العادي في صفحات أي مستند PDF باستخدام OCR (التعرف الضوئي على الحروف) وتُرجعه كسلسلة نصية. وهي تتبع نمط Aspose.PDF القياسي absorber/visitor، لذا تتصل بنفس نقاط الدخول Accept مثل بقية الـ absorbers.

التعرف على النص في صفحة PDF واحدة

أنشئ OcrTextAbsorber، واستدعِ طريقة Accept الخاصة بالصفحة، ثم اقرأ النتيجة من خاصية Text. استدعاء absorber.Visit(page) مكافئ مباشر لـ page.Accept(absorber).

التعرف على النص في مستند PDF بالكامل

استدعِ طريقة Accept الخاصة بمجموعة Pages للتعرف على كل صفحة. يتم دمج النص المتعرف عليه لكل صفحة باستخدام فاصل الصفحات من الخيارات.

تكوين خيارات التعرف

يتم تكوين التعرف باستخدام كائن OcrTextRecognitionOptions يُمرَّر إلى المُنشئ. تتوفر الخيارات نفسها أيضًا بعد الإنشاء عبر خاصية Options الخاصة بالـ absorber، ويؤثر تغييرها على استدعاء التعرف التالي.

العضو الافتراضي المعنى التحقق
Language OcrLanguage.English لغة التعرف.
Resolution 300 دقة التعرف، بوحدة DPI. النطاق العملي ~200–600. القيم الأعلى تستهلك ذاكرة/معالجًا أكثر مع تحسّن طفيف في الدقة. يطرح ArgumentOutOfRangeException إذا كان <= 0.
PageSeparator "\n\n" يُدرج بين النص المتعرف عليه للصفحات المتتالية (وليس قبل الصفحة الأولى). string.Empty يدمج الصفحات بدون فاصل. يطرح ArgumentNullException إذا تم تعيينه إلى null.

الكشف التلقائي عن اللغة

عندما تكون لغة المستند غير معروفة، عيّن Language إلى OcrLanguage.Auto لاكتشافها تلقائيًا. تُحدَّد لغة التعرف باستخدام تعداد OcrLanguage، الذي يدعم الإنجليزية (الافتراضية)، والعربية، والصينية، والفرنسية، والألمانية، والإندونيسية، والإيطالية، واليابانية، والكازاخية، والكورية، والبولندية، والبرتغالية، والروسية، والإسبانية، والأوكرانية، وAuto.

كيفية إرجاع نتائج التعرف

  • يتم استبدال Text وليس تجميعه. كل استدعاء لـ Accept/Visit يستبدل Text بنتيجة ذلك الاستدعاء؛ اقرأه بعد كل استدعاء للاحتفاظ بنتائج متعددة. يكون string.Empty قبل الاستدعاء الأول وللمستند الذي لا يحتوي على صفحات.
  • دمج عدة صفحات. يتم ربط نص كل صفحة باستخدام Options.PageSeparator (الافتراضي "\n\n")؛ ولا يُضاف فاصل قبل الصفحة الأولى. string.Empty يدمج الصفحات بدون فاصل.
  • الدقة. 300 DPI هي القيمة الافتراضية والنقطة المثلى عمليًا؛ و~200–600 هو النطاق المفيد.