كشف الجدول واستخراج المعلومات باستخدام التعلم العميق

عقدة المصدر: 1325422

مقدمة لاستخراج الجدول

تتزايد كمية البيانات التي يتم جمعها بشكل كبير يومًا بعد يوم مع تزايد عدد التطبيقات والبرامج والأنظمة الأساسية عبر الإنترنت.

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

أحد المجالات الفرعية التي تتطلب الانتباه في مجال استخراج المعلومات هو استخراج الجداول من الصور أو اكتشاف البيانات المجدولة من النماذج وملفات PDF والمستندات.

استخراج الجدول هي مهمة الكشف عن معلومات الجدول وتحليلها في مستند.

Table OCR - الشبكات النانوية التي تستخرج بيانات الجدول من الصورة!
جدول التعرف الضوئي على الحروف - شبكات النانو لاستخراج بيانات الجدول من صورة ما!

تخيل أن لديك الكثير من المستندات ذات البيانات المجدولة التي تحتاج إلى استخراجها لمزيد من المعالجة. بشكل تقليدي ، يمكنك نسخها يدويًا (على ورق) أو تحميلها في أوراق إكسل.

ومع ذلك ، باستخدام برنامج Table OCR ، يمكنك اكتشاف الجداول تلقائيًا واستخراج جميع البيانات المجدولة من المستندات دفعة واحدة. هذا يوفر الكثير من الوقت وإعادة العمل.

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


هل تريد استخراج البيانات الجدولية من الفواتير أو الإيصالات أو أي نوع آخر من المستندات؟ تحقق من شبكات النانو مستخرج جدول PDF لاستخراج البيانات الجدولية. جدولة التجريبي لمعرفة المزيد عن الأتمتة استخراج الجدول.


جدول المحتويات

استخراج الجدول من الصورة باستخدام Nanonets Table OCR

  • حساب جديد للحصول على حساب Nanonets مجاني

    • تحميل الصور/الملفات إلى نموذج Nanonets Table OCR
    • تقوم شبكات النانو تلقائيًا باكتشاف جميع البيانات الجدولية واستخراجها
    • تحرير ومراجعة البيانات (إذا لزم الأمر)
    • قم بتصدير البيانات المعالجة بتنسيق Excel أو csv أو JSON

استخراج الجدول من الصورة مع النانو

تريد كشط البيانات من PDF مستندات، تحويل جدول PDF إلى Excel or أتمتة استخراج الجدول? اكتشف كيف النانونات مكشطة PDF or محلل PDF يمكن أن يعزز عملك لتكون أكثر إنتاجية.


واجهة برمجة تطبيقات Nanonets Table OCR

جدول التعرف الضوئي على الحروف مع النانو
جدول التعرف الضوئي على الحروف مع النانو

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

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

يمكنك أيضًا الحصول على استجابات JSON لكل توقع لدمجها مع أنظمتك الخاصة وإنشاء تطبيقات مدعومة بالتعلم الآلي مبنية على أحدث الخوارزميات وبنية تحتية قوية.

https://nanonets.com/documentation/


هل يتعامل عملك مع البيانات أو التعرف على النص في المستندات الرقمية أو ملفات PDF أو الصور؟ هل تساءلت عن كيفية استخراج البيانات المجدولة ، استخراج النص من الصور , استخراج البيانات من ملف PDF or استخراج النص من PDF بدقة وكفاءة؟


من سيجد أن استخراج الجدول مفيد

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

المصدر باتريك توماسو، الغاء

حالات الاستخدام الشخصي

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

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

المستندات إلى HTML: في صفحات الويب ، نجد الكثير من المعلومات المقدمة باستخدام الجداول. إنها تساعدنا بالمقارنة مع البيانات وتعطينا ملاحظة سريعة على الأرقام بطريقة منظمة. باستخدام عملية استخراج الجدول ، يمكننا مسح مستندات PDF أو صور JPG / PNG ، وتحميل المعلومات مباشرة في تنسيق جدول مخصص ذاتي التصميم. يمكننا كذلك كتابة البرامج النصية لإضافة جداول إضافية بناءً على الجداول الحالية ، وبالتالي رقمنة المعلومات. هذا يساعدنا في تحرير المحتوى وتسريع عملية التخزين.


حالات الاستخدام الصناعي

هناك العديد من الصناعات في جميع أنحاء العالم التي تعمل بشكل كبير على الأوراق والوثائق ، لا سيما في قطاعي البنوك والتأمين. من تخزين تفاصيل العملاء إلى الاهتمام باحتياجات العملاء ، يتم استخدام الجداول على نطاق واسع. يتم تمرير هذه المعلومات مرة أخرى كوثيقة (نسخة ورقية) إلى فروع مختلفة للموافقات ، حيث أحيانًا ، قد يؤدي سوء الفهم إلى أخطاء أثناء الاستيلاء على المعلومات من الجداول. بدلاً من ذلك ، باستخدام الأتمتة هنا ، يجعل حياتنا أسهل بكثير. بمجرد التقاط البيانات الأولية والموافقة عليها ، يمكننا مسح هذه المستندات مباشرة في الجداول ومزيد من العمل على البيانات الرقمية. ناهيك عن تقليل استهلاك الوقت والأخطاء ، يمكننا إخطار العملاء بالوقت والمكان اللذين تتم فيه معالجة المعلومات. هذا ، بالتالي ، يضمن موثوقية البيانات ، ويبسط طريقتنا في معالجة العمليات. دعنا الآن نلقي نظرة على حالات الاستخدام الممكنة الأخرى:

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

مسار الأصول: في الصناعات التحويلية ، يستخدم الأشخاص الطاولات الثابتة لتتبع الكيانات المصنعة مثل الصلب والحديد والبلاستيك ، إلخ. يتم تسمية كل عنصر مُصنَّع برقم فريد حيث يستخدمون الجداول لتتبع العناصر المصنعة وتسليمها يوميًا. الأتمتة يمكن أن تساعد في توفير الكثير من الوقت والأصول من حيث الاختلالات أو عدم تناسق البيانات.


حالات استخدام الأعمال

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

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

أتمتة النموذج: تعمل النماذج عبر الإنترنت على تعطيل هذه الطريقة المجربة والحقيقية من خلال مساعدة الشركات على جمع المعلومات التي تحتاجها وربطها في الوقت نفسه بمنصات البرامج الأخرى المضمنة في سير عملها. إلى جانب تقليل الحاجة إلى إدخال البيانات يدويًا (مع إدخال البيانات الآلي) ومتابعة رسائل البريد الإلكتروني ، يمكن أن يؤدي استخراج الجدول إلى التخلص من تكلفة الطباعة ، والبريد ، والتخزين ، والتنظيم ، وإتلاف البدائل الورقية التقليدية.


هل لديك مشكلة OCR في الاعتبار؟ تريد رقمنة الفواتير، ملفات PDF أو لوحات الأرقام؟ رئيس لأكثر من النانو وبناء نماذج التعرف الضوئي على الحروف مجانا!


التعلم العميق في العمل

التعلم العميق هو جزء من مجموعة واسعة من أساليب التعلم الآلي القائمة على الشبكات العصبية الاصطناعية.

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


TableNet

ورقة: TableNet: نموذج التعلم العميق لاكتشاف الجدول الشامل واستخراج البيانات الجدولية من صور المستندات الممسوحة ضوئيًا

مقدمة: إن TableNet عبارة عن بنية حديثة للتعلم العميق اقترحها فريق من TCS Research في العام 2019. وكان الدافع الرئيسي هو استخراج المعلومات من الجداول الممسوحة ضوئيًا عبر الهواتف المحمولة أو الكاميرات.

اقترحوا حلاً يتضمن الكشف الدقيق للمنطقة الجدولية داخل صورة ما ، ثم اكتشاف واستخراج المعلومات من الصفوف والأعمدة في الجدول المكتشف.

بيانات: كانت مجموعة البيانات المستخدمة Marmot. يحتوي على 2000 صفحة بتنسيق PDF تم جمعها مع الحقائق الأرضية المقابلة. وهذا يشمل الصفحات الصينية أيضًا. حلقة الوصل - http://www.icst.pku.edu.cn/cpdp/sjzy/index.htm

العمارة: تستند الهندسة المعمارية إلى Long et al. ، وهو نموذج مشفر وفك تشفير للتجزئة الدلالية. يتم استخدام نفس شبكة التشفير / وحدة فك التشفير مثل بنية FCN لاستخراج الجدول. يتم معالجة الصور وتعديلها مسبقًا باستخدام ملف Tesseract OCR.

يتم اشتقاق النموذج على مرحلتين من خلال إخضاع المدخلات لتقنيات التعلم العميق. في المرحلة الأولى ، استخدموا أوزان شبكة VGG-19 سابقة التدريب. لقد استبدلوا الطبقات المتصلة بالكامل لشبكة VGG المستخدمة بطبقات تلافيفية 1 × 1. جميع الطبقات التلافيفية يعقبها تنشيط ReLU وطبقة من احتمال التسرب 0.8. يسمون المرحلة الثانية بالشبكة التي تم فك شفرتها والتي تتكون من فرعين. هذا حسب الحدس بأن منطقة العمود هي مجموعة فرعية من منطقة الجدول. وبالتالي ، يمكن لشبكة الترميز الفردية تصفية المناطق النشطة بدقة أفضل باستخدام ميزات كل من مناطق الجدول والأعمدة. يتم توزيع مخرجات الشبكة الأولى على الفرعين. في الفرع الأول ، يتم تطبيق عمليتي الالتفاف وترقية خريطة المعالم النهائية لتلبية أبعاد الصورة الأصلية. في الفرع الآخر لاكتشاف الأعمدة ، توجد طبقة التفاف إضافية مع وظيفة تنشيط ReLU وطبقة التسرب بنفس احتمال التسرب كما ذكرنا من قبل. خرائط المعالم تمت معاينتها باستخدام تلايرات مخططة كسريًا بعد طبقة التفاف (1 × 1). فيما يلي صورة للهندسة المعمارية:

بنية TableNet

النواتج: بعد معالجة المستندات باستخدام النموذج ، يتم إنشاء أقنعة الجداول والأعمدة. يتم استخدام هذه الأقنعة لتصفية الجدول ومناطق الأعمدة الخاصة به من الصورة. الآن باستخدام Tesseract OCR ، يتم استخراج المعلومات من المناطق المجزأة. فيما يلي صورة توضح الأقنعة التي تم إنشاؤها ثم يتم استخراجها لاحقًا من الجداول:

لقد اقترحوا أيضًا نفس النموذج الذي تم ضبطه مع ICDAR والذي كان أداؤه أفضل من النموذج الأصلي. نقاط الاسترجاع والدقة و F1 الخاصة بالنموذج المضبوط هي 0.9628 و 0.9697 و 0.9662 على التوالي. النموذج الأصلي لديه المقاييس المسجلة من 0.9621 ، 0.9547 ، 0.9583 في نفس الترتيب. دعونا الآن الغوص في واحد أكثر العمارة.


ديبديسرت

ورقة: DeepDeSRT: التعلم العميق للكشف وهيكل التعرف على الجداول في صور الوثيقة

مقدمة: DeepDeSRT هو إطار عمل للشبكة العصبية يُستخدم لاكتشاف وفهم الجداول في المستندات أو الصور. لديها حلين كما هو مذكور في العنوان:

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

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

بيانات: مجموعة البيانات المستخدمة هي مجموعة بيانات مسابقة ICDAR 2013 التي تحتوي على 67 وثيقة تحتوي على 238 صفحة.

العمارة:

  • كشف الجدول استخدم النموذج المقترح Fast RCNN كإطار أساسي للكشف عن الجداول. تم تقسيم الهندسة المعمارية إلى قسمين مختلفين. في الجزء الأول ، قاموا بإنشاء اقتراحات المنطقة استنادًا إلى صورة الإدخال من قبل ما يسمى شبكة اقتراح المنطقة (RPN). في الجزء الثاني ، قاموا بتصنيف المناطق باستخدام Fast-RCNN. لدعم هذه الهندسة المعمارية ، فإنها تستخدم ZFNet والأوزان من VGG-16.
  • التعرف على الهيكل بعد اكتشاف جدول بنجاح وتحديد موقعه على النظام ، فإن التحدي التالي في فهم محتوياته هو التعرف على الصفوف والأعمدة التي تشكل البنية المادية للجدول وتحديد موقعها. ومن ثم فقد استخدموا شبكة متصلة بالكامل بأوزان VGG-16 التي تستخرج المعلومات من الصفوف والأعمدة. فيما يلي مخرجات DeepDeSRT:

النواتج:

مخرجات كشف الجدول
مخرجات التعرف على الهيكل [6]

تكشف نتائج التقييم أن DeepDeSRT يتفوق على الأساليب الحديثة لاكتشاف الجدول والتعرف على الهيكل ويحقق مقاييس F1 بنسبة 96.77٪ و 91.44٪ لاكتشاف الجدول والتعرف على البنية ، على التوالي حتى عام 2015.


الرسم البياني الشبكات العصبية

ورقة: إعادة التفكير في التعرف على الجداول باستخدام الشبكات العصبية الرسم البياني

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

يجمع هذا النموذج المقترح بين فوائد كل من الشبكات العصبية التلافيفية لاستخراج المعالم المرئية وشبكات الرسم البياني للتعامل مع بنية المشكلة.

بيانات: اقترح المؤلفون مجموعة بيانات جديدة كبيرة تولدت صناعيا من 0.5 مليون الجداول مقسمة إلى أربع فئات.

  1. الصور عبارة عن صور واضحة بدون دمج مع خطوط حاكمة
  2. الصور لها أنواع حدود مختلفة بما في ذلك الغياب العرضي للخطوط الحاكمة
  3. يقدم دمج الخلايا والعمود
  4. التقطت الكاميرا صوراً مع تحول المنظور الخطي

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

النواتج:

النواتج الناتجة عن الرسم البياني الشبكات العصبية

فيما يلي أرقام الدقة المجدولة التي يتم إنشاؤها بواسطة الشبكات لأربع فئات من الشبكة كما هو موضح في بيانات القسم:


CGANs والخوارزميات الجينية

ورقة: استخراج الجداول من المستندات باستخدام الشبكات التعددية الشرطية والخوارزميات الجينية

مقدمة: في هذا البحث ، استخدم المؤلفون نهجًا من أعلى إلى أسفل بدلاً من استخدام نهج من أسفل إلى أسفل (دمج الخطوط في الخلايا أو الصفوف أو الأعمدة).

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

بيانات: استخدم المؤلفون مجموعة البيانات الخاصة بهم التي تحتوي على 4000 جدول.

العمارة: النموذج المقترح يتكون من جزأين. في الجزء الأول ، يتم استخراج الصور المدخلة في جداول الهيكل العظمي باستخدام شبكة عصبية شرعية التكاثرية الشرطية. تمتلك شبكة GAN شبكتين مرة أخرى ، وهو المولد الذي ينشئ عينات عشوائية ومميزًا يوضح ما إذا كانت الصور التي تم إنشاؤها مزيفة أو أصلية. Generator G عبارة عن شبكة فك تشفير حيث يتم تمرير صورة إدخال عبر سلسلة من طبقات الاختزال التدريجي حتى طبقة عنق الزجاجة حيث يتم عكس العملية. لتمرير المعلومات الكافية إلى طبقات فك التشفير ، يتم استخدام بنية U-Net مع اتصالات تخطي وإضافة اتصال تخطي بين الطبقات i و n - i عبر السلسلة ، حيث n هو العدد الإجمالي للطبقات ، وأنا هو رقم الطبقة في التشفير. يتم استخدام بنية PatchGAN للمميز D. هذا يعاقب على بنية صورة الإخراج في مقياس التصحيحات. هذه تنتج الإخراج كجدول هيكل عظمي.

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

التخطيطي العام لهذا النهج

الناتج: يتم تقييم هياكل الجدول المقدرة من خلال مقارنة - رقم الصف والعمود ، موضع الزاوية العليا اليسرى ، ارتفاع الصف وعرض الأعمدة

أعطت الخوارزمية الجينية دقة صف 95.5 ٪ ودقة 96.7 ٪ دقة العمود أثناء استخراج المعلومات من الجداول.


تحتاج إلى رقمنة المستندات ، المبالغ المستلمة or الفواتير ولكن كسول جدا للكود؟ رئيس لأكثر من النانو وبناء نماذج التعرف الضوئي على الحروف مجانا!


[الكود] النهج التقليدية

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

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

  • نص: يحتوي على سلسلة وخمس سمات (أعلى ، يسار ، عرض ، ارتفاع ، خط)
  • خط: يحتوي على كائنات نصية يفترض أن تكون على نفس السطر في الملف الأصلي
  • سطر واحد: كائن خط مع كائن نص واحد فقط.
  • متعدد الخط: كائن خط مع أكثر من كائن نصي.
  • متعدد الخط حظر: مجموعة من الكائنات متعددة الخطوط المستمرة.
  • صف: كتل أفقية في الجدول
  • عمود: كتل عمودية في الجدول
  • الموبايل : تقاطع الصف والعمود
  • خلية - الحشو: الحشوة الداخلية أو المساحة داخل الخلية.

كشف الجدول مع OpenCV

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

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

file = r’table.png’
table_image_contour = cv2.imread(file, 0)
table_image = cv2.imread(file)

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

صورة الجدول

يجب علينا توظيف تقنية تسمى عكس صورة العتبة مما يعزز البيانات الموجودة في الصورة المحددة.

ret, thresh_value = cv2.threshold( table_image_contour, 180, 255, cv2.THRESH_BINARY_INV)

خطوة هامة أخرى قبل المعالجة هي تمدد الصورة. الامتداد عبارة عن عملية رياضية بسيطة يتم تطبيقها على الصور الثنائية (بالأبيض والأسود) والتي تعمل تدريجياً على توسيع حدود مناطق البيكسلات الأمامية (أي بكسل بيضاء ، عادة).

kernel = np.ones((5,5),np.uint8)
dilated_value = cv2.dilate(thresh_value,kernel,iterations = 1)

في OpenCV ، نستخدم الطريقة ، تجدون للحصول على الخطوط في الصورة الحالية. تأخذ هذه الطريقة ثلاث حجج ، الأول هو الصورة المتوسعة (الصورة المستخدمة لإنشاء الصورة المتوسعة هي table_image_contour - طريقة findContours تدعم الصور الثنائية فقط) ، والثانية هي cv2.RETR_TREE الذي يقول لنا لاستخدام وضع استرجاع كفاف ، والثالث هو  cv2.CHAIN_APPROX_SIMPLE وهو وضع التقريب الكنتوري. ال تجدون يفك قيمتين، ومن ثم سنضيف متغيرًا آخر اسمه تسلسل . عندما تكون الصور متداخلة ، فإن ملامحها تحلب الترابط. لتمثيل مثل هذه العلاقات ، يتم استخدام التسلسل الهرمي.

contours, hierarchy = cv2.findContours( dilated_value, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

علامة معالم حيث توجد بالضبط البيانات في الصورة. الآن ، نقوم بالتكرار على قائمة الأكفة التي قمنا بحسابها في الخطوة السابقة وحساب إحداثيات المربعات المستطيلة كما هو موضح في الصورة الأصلية باستخدام الطريقة ،  cv2.boundingRect. في التكرار الأخير ، وضعنا هذه الصناديق على table_image للصورة الأصلية باستخدام الطريقة ، cv2.rectangle ().

for cnt in contours: x, y, w, h = cv2.boundingRect(cnt) # bounding the images if y < 50: table_image = cv2.rectangle(table_image, (x, y), (x + w, y + h), (0, 0, 255), 1) 

هذه هي خطوتنا الأخيرة. هنا نستخدم الطريقة اسمه ويندو لتقديم طاولتنا بالمحتوى المستخلص والملامح المدمجة فيه. يوجد أدناه مقتطف الشفرة:

plt.imshow(table_image)
plt.show()
cv2.namedWindow('detecttable', cv2.WINDOW_NORMAL)

النواتج

غيّر قيمة y إلى 300 في مقتطف الشفرة أعلاه ، وسيكون هذا ناتجك:

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

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


PDFMiner و Regex تحليل

لاستخراج المعلومات من المستندات الأصغر ، يستغرق الأمر وقتًا لتكوين نماذج التعلم العميق أو كتابة خوارزميات رؤية الكمبيوتر. بدلاً من ذلك ، يمكننا استخدام التعبيرات النمطية في Python من أجل استخراج النص من مستندات PDF. تذكر أيضًا أن هذه التقنية لا تعمل مع الصور. لا يمكننا استخدام هذا إلا لاستخراج المعلومات من ملفات HTML أو مستندات PDF. هذا لأنه عندما تستخدم تعبيرًا عاديًا ، ستحتاج إلى مطابقة المحتوى بالمصدر واستخراج المعلومات. باستخدام الصور ، لن تتمكن من مطابقة النص ، وستفشل التعبيرات العادية. دعنا الآن نعمل مع مستند PDF بسيط ونستخرج المعلومات من الجداول الموجودة فيه. الصورة أدناه:

في الخطوة الأولى ، نقوم بتحميل ملف PDF في برنامجنا. بمجرد الانتهاء من ذلك ، نقوم بتحويل PDF إلى HTML حتى نتمكن من استخدام التعبيرات العادية مباشرة ، وبالتالي استخراج المحتوى من الجداول. لهذا ، فإن الوحدة التي نستخدمها هي pdfminer. هذا يساعد على قراءة المحتوى من PDF وتحويله إلى ملف HTML.

يوجد أدناه مقتطف الشفرة:

from pdfminer.pdfinterp import PDFResourceManager from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.converter import HTMLConverter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from cStringIO import StringIO
import re def convert_pdf_to_html(path): rsrcmgr = PDFResourceManager() retstr = StringIO() codec = 'utf-8' laparams = LAParams() device = HTMLConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) fp = file(path, 'rb') interpreter = PDFPageInterpreter(rsrcmgr, device) password = "" maxpages = 0 #is for all caching = True pagenos=set() for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages,password=password,caching=caching, check_extractable=True): interpreter.process_page(page) fp.close() device.close() str = retstr.getvalue() retstr.close() return str

أرصدة الكود: زيفروس

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

'<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">Changing Echoesn<br>7632 Pool Station Roadn<br>Angels Camp, CA 95222n<br>(209) 785-3667n<br>Intake: (800) 633-7066n<br>SA </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> TX DT BU </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> RS RL OP PH </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> CO CJ n<br></span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> SF PI </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> AH SPn<br></span></div>' 

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

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

import re # Match the pattern in the string
re.match(pattern, string) # Search for a pattern in a string
re.search(pattern, string) # Finds all the pattern in a string
re.findall(pattern, string) # Splits string based on the occurrence of pattern
re.split(pattern, string, [maxsplit=0] # Search for the pattern and replace it with the given string
re.sub(pattern, replace, string)

تتضمن الشخصيات / التعبيرات التي تراها عادةً في التعبيرات العادية ما يلي:

  • [A-Z]  - أي حرف كبير
  • د  - رقم
  • w  - حرف الكلمة (الأحرف والأرقام والشرطات السفلية)
  • s  - مسافة بيضاء (المسافات وعلامات التبويب والمسافات البيضاء)

الآن لمعرفة نمط معين في HTML ، نستخدم التعبيرات العادية ثم نكتب الأنماط وفقًا لذلك. قمنا أولاً بتقسيم البيانات بحيث يتم فصل مجموعات العناوين إلى كتل منفصلة وفقًا لاسم البرنامج (ANGELS CAMP ، APPLE VALLEY ، إلخ):

pattern = '(?<=<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">)(.*?)(?=<br></span></div>)' for programinfo in re.finditer(pattern, biginputstring, re.DOTALL): do looping stuff…

في وقت لاحق ، نجد اسم البرنامج والمدينة والولاية والرمز البريدي الذي يتبع دائمًا نفس النمط (نص ، فاصلة ، أحرف كبيرة مكونة من رقمين ، 5 أرقام (أو 5 أرقام واصلة أربعة أرقام) - هذه موجودة في ملف PDF الذي اعتبرنا كمدخل). تحقق من مقتطف الرمز التالي:

# To identify the program name
programname = re.search('^(?!<br>).*(?=\n)', programinfo.group(0))
# since some programs have odd characters in the name we need to escape
programname = re.escape(programname) citystatezip =re.search('(?<=>)([a-zA-Zs]+, [a-zA-Zs]{2} d{5,10})(?=\n)', programinfo.group(0))
mainphone =re.search('(?<=<br>)(d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)', programinfo.group(0))
altphones = re.findall('(?<=<br>)[a-zA-Zs]+: (d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)(?=\n)', programinfo.group(0)) 

هذا مثال بسيط يوضح كيفية استخراج المعلومات من ملفات PDF باستخدام تعبير عادي. بعد استخراج جميع المعلومات المطلوبة ، نقوم بتحميل هذه البيانات في ملف CSV.

def createDirectory(instring, outpath, split_program_pattern): i = 1 with open(outpath, 'wb') as csvfile: filewriter = csv.writer(csvfile, delimiter=',' , quotechar='"', quoting=csv.QUOTE_MINIMAL) # write the header row filewriter.writerow(['programname', 'address', 'addressxtra1', 'addressxtra2', 'city', 'state', 'zip', 'phone', 'altphone', 'codes']) # cycle through the programs for programinfo in re.finditer(split_program_pattern, instring, re.DOTALL): print i i=i+1 # pull out the pieces programname = getresult(re.search('^(?!<br>).*(?=\n)', programinfo.group(0))) programname = re.escape(programname) # some facilities have odd characters in the name

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

لقطة شاشة للعناصر المستخرجة من الجداول باستخدام التعبيرات العادية

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


التحديات مع الطرق التقليدية

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


كشف الجدول

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

  • تحويل الصورة: تحويل الصورة هو خطوة أساسية في اكتشاف الملصقات. يتضمن ذلك تحسين البيانات والحدود الموجودة في الجدول. نحن بحاجة إلى اختيار خوارزميات المعالجة المسبقة المناسبة بناءً على البيانات الواردة في الجدول. على سبيل المثال ، عندما نعمل مع الصور ، نحتاج إلى تطبيق أدوات الكشف عن الحافة. تساعدنا خطوة التحويل هذه في العثور على المحتوى بشكل أكثر دقة. في بعض الحالات ، قد يحدث خطأ في المخططات وتفشل الخوارزميات في تحسين الصورة. وبالتالي ، فإن اختيار خطوات تحويل الصورة الصحيحة والمعالجة المسبقة أمر بالغ الأهمية.
  • جودة الصورة: عندما نقوم بمسح الجداول ضوئيًا لاستخراج المعلومات ، نحتاج إلى التأكد من فحص هذه المستندات في بيئات أكثر إشراقًا تضمن الحصول على صور جيدة الجودة. عندما تكون ظروف الإضاءة سيئة ، قد تفشل خوارزميات CV و DL في اكتشاف الجداول في المدخلات المحددة. إذا كنا نستخدم التعلم العميق ، فعلينا التأكد من أن مجموعة البيانات متسقة ولديها مجموعة جيدة من الصور القياسية. إذا استخدمنا هذه الطاولات على طاولات موجودة في الأوراق القديمة المتفتتة ، فسنحتاج أولاً إلى المعالجة المسبقة والتخلص من الضوضاء في تلك الصور.
  • مجموعة متنوعة من المخططات الهيكلية والقوالب: جميع الجداول ليست فريدة من نوعها. يمكن لخلية واحدة أن تمتد على عدة خلايا ، عموديًا أو أفقيًا ، ويمكن لمجموعات من الخلايا الممتدة أن تنشئ عددًا كبيرًا من الاختلافات الهيكلية. أيضًا ، يؤكد البعض على ميزات النص ، ويمكن أن تؤثر سطور الجدول على طريقة فهم بنية الجدول. على سبيل المثال ، قد تؤكد الخطوط الأفقية أو النص الغامق على رؤوس متعددة للجدول. يحدد هيكل الجدول بصريًا العلاقات بين الخلايا. تجعل العلاقات المرئية في الجداول من الصعب العثور على الخلايا المرتبطة واستخراج المعلومات منها حسابيًا. لذلك من المهم بناء خوارزميات قوية في التعامل مع هياكل الجداول المختلفة.
  • حشوة الخلية ، الهوامش ، الحدود: هذه هي أساسيات أي جدول - لن تكون الحواف والهوامش والحدود نفسها دائمًا. تحتوي بعض الجداول على الكثير من الحشو داخل الخلايا ، والبعض الآخر لا. سيساعد استخدام الصور عالية الجودة وخطوات المعالجة المسبقة عملية استخراج الجدول على العمل بسلاسة.

استخراج الجدول

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

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

تحويل الجدول

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

  • ضبط التنسيقات: عندما يتم استخراج تنسيقات مختلفة من الجداول من المستندات الممسوحة ضوئيًا ، نحتاج إلى تخطيط جدول مناسب لدفع المحتوى. في بعض الأحيان ، تفشل الخوارزمية في استخراج المعلومات من الخلايا. ومن ثم ، فإن تصميم التخطيط المناسب مهم أيضًا.
  • مجموعة متنوعة من أنماط عرض القيمة: يمكن تقديم القيم في الخلايا باستخدام أنماط تمثيل نحوية مختلفة. ضع في اعتبارك أن النص في الجدول هو 6 ± 2. قد تفشل الخوارزمية في تحويل تلك المعلومات المعينة. وبالتالي يتطلب استخراج القيم العددية معرفة أنماط العرض التقديمي المحتملة.
  • تمثيل التصور: تم تصميم معظم تنسيقات التمثيل للجداول ، مثل لغات الترميز التي يمكن وصف الجداول بها ، لتصورها. لذلك ، من الصعب معالجة الجداول تلقائيًا.

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



تحتاج إلى رقمنة المستندات أو الإيصالات أو الفواتير ولكن كسول جدا للكود؟ رئيس لأكثر من النانو وبناء نماذج التعرف الضوئي على الحروف مجانا!


نبذة عامة

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



تحديث:
تمت إضافة المزيد من مواد القراءة حول الأساليب المختلفة في اكتشاف الجدول واستخراج المعلومات باستخدام التعلم العميق.

الطابع الزمني:

اكثر من الذكاء الاصطناعي والتعلم الآلي