Tabled هي مكتبة صغيرة للكشف عن الجداول واستخراجها. يستخدم surya للعثور على جميع الجداول في ملف PDF، ويحدد الصفوف/الأعمدة، وينسق الخلايا في Markdown، أو CSV، أو html.
مميزة | سكان | التغيير من 2016 إلى 2060 | ||||||
---|---|---|---|---|---|---|---|---|
2016 | 2020 | 2030 | 2040 | 2050 | 2060 | رقم | نسبة مئوية | |
مجموع السكان | 323.1 | 332.6 | 355.1 | 373.5 | 388.9 | 404.5 | 81.4 | 25.2 |
تحت 18 سنة | 73.6 | 74.0 | 75.7 | 77.1 | 78.2 | 80.1 | 6.5 | 8.8 |
من 18 إلى 44 سنة | 116.0 | 119.2 | 125.0 | 126.4 | 129.6 | 132.7 | 16.7 | 14.4 |
من 45 إلى 64 سنة | 84.3 | 83.4 | 81.3 | 89.1 | 95.4 | 97.0 | 12.7 | 15.1 |
65 سنة وما فوق | 49.2 | 56.1 | 73.1 | 80.8 | 85.7 | 94.7 | 45.4 | 92.3 |
85 سنة وما فوق | 6.4 | 6.7 | 9.1 | 14.4 | 18.6 | 19.0 | 12.6 | 198.1 |
100 سنة وأكثر | 0.1 | 0.1 | 0.1 | 0.2 | 0.4 | 0.6 | 0.5 | 618.3 |
الخلاف هو المكان الذي نناقش فيه التطوير المستقبلي.
توجد واجهة برمجة تطبيقات مستضافة للجدول متاحة هنا:
يعمل مع ملفات PDF والصور ومستندات Word وPowerPoint
سرعة متسقة، مع عدم وجود طفرات الكمون
موثوقية عالية ووقت تشغيل
أريد أن يكون الجدول متاحًا على أوسع نطاق ممكن، مع الاستمرار في تمويل تكاليف التطوير/التدريب الخاصة بي. البحث والاستخدام الشخصي أمر مقبول دائمًا، ولكن هناك بعض القيود على الاستخدام التجاري.
تم ترخيص أوزان النماذج cc-by-nc-sa-4.0
، ولكنني سأتنازل عن ذلك لأي مؤسسة يقل إجمالي إيراداتها عن 5 ملايين دولار أمريكي في آخر 12 شهرًا وأقل من 5 ملايين دولار أمريكي في تمويل رأس المال الاستثماري/الملاك مدى الحياة نشأ. يجب أيضًا ألا تكون قادرًا على المنافسة مع Datalab API. إذا كنت تريد إزالة متطلبات ترخيص GPL (الترخيص المزدوج) و/أو استخدام الأوزان تجاريًا بما يتجاوز حد الإيرادات، فراجع الخيارات هنا.
ستحتاج إلى إصدار python 3.10+ وPyTorch. قد تحتاج إلى تثبيت إصدار وحدة المعالجة المركزية من الشعلة أولاً إذا كنت لا تستخدم جهاز Mac أو جهاز GPU. انظر هنا لمزيد من التفاصيل.
التثبيت مع:
تثبيت النقطة tabled-pdf
ما بعد التثبيت:
افحص الإعدادات في tabled/settings.py
. يمكنك تجاوز أي إعدادات باستخدام متغيرات البيئة.
سيتم اكتشاف جهاز الشعلة الخاص بك تلقائيًا، ولكن يمكنك تجاوز ذلك. على سبيل المثال، TORCH_DEVICE=cuda
.
سيتم تنزيل أوزان النماذج تلقائيًا في المرة الأولى التي تقوم فيها بتشغيل الجدول.
تم جدولة DATA_PATH
يمكن أن يكون DATA_PATH
صورة أو ملف pdf أو مجلد صور/ملفات pdf
--format
يحدد تنسيق الإخراج لكل جدول ( markdown
، html
، أو csv
)
--save_json
يحفظ معلومات الصفوف والأعمدة الإضافية في ملف json
--save_debug_images
يحفظ الصور التي تعرض الصفوف والأعمدة المكتشفة
--skip_detection
يعني أن الصور التي تمررها عبارة عن جداول مقصوصة ولا تحتاج إلى أي اكتشاف للجدول.
--detect_cell_boxes
بشكل افتراضي، سيحاول الجدول سحب معلومات الخلية من ملف pdf. إذا كنت تريد بدلاً من ذلك أن يتم اكتشاف الخلايا بواسطة نموذج اكتشاف، فحدد هذا (عادةً ما تحتاج إلى ذلك فقط مع ملفات PDF التي تحتوي على نص مضمن تالف).
--save_images
يحدد أنه يجب حفظ صور الصفوف/الأعمدة والخلايا المكتشفة.
بعد تشغيل البرنامج النصي، سيحتوي دليل الإخراج على مجلدات بنفس الأسماء الأساسية لأسماء ملفات الإدخال. سيكون داخل هذه المجلدات ملفات تخفيض السعر لكل جدول في المستندات المصدر. سيكون هناك أيضًا صور للجداول بشكل اختياري.
سيكون هناك أيضًا ملف results.json
في جذر دليل الإخراج. سيحتوي الملف على قاموس json حيث المفاتيح هي أسماء ملفات الإدخال بدون امتدادات. ستكون كل قيمة عبارة عن قائمة من القواميس، واحدة لكل جدول في المستند. يحتوي كل قاموس جدول على:
cells
- النص المكتشف والمربعات المحيطة لكل خلية في الجدول.
bbox
- bbox للخلية الموجودة داخل الجدول bbox
text
- نص الخلية
row_ids
- معرفات الصفوف التي تنتمي إليها الخلية
col_ids
- معرفات الأعمدة التي تنتمي إليها الخلية
order
- ترتيب هذه الخلية داخل خلية الصف/العمود المخصصة لها. (الفرز حسب الصف، ثم العمود، ثم الترتيب)
rows
- مربعات الصفوف المكتشفة
bbox
- مربع b للصف بتنسيق (x1، x2، y1، y2).
row_id
- المعرف الفريد للصف
cols
- bboxes للأعمدة المكتشفة
bbox
- bbox للعمود بتنسيق (x1، x2، y1، y2).
col_id
- المعرف الفريد للعمود
image_bbox
- صندوق b للصورة بتنسيق (x1، y1، x2، y2). (x1, y1) هي الزاوية العلوية اليسرى، و(x2, y2) هي الزاوية اليمنى السفلية. الجدول bbox مرتبط بهذا.
bbox
- المربع المحيط بالجدول داخل مربع الصورة.
pnum
- رقم الصفحة داخل المستند
tnum
- فهرس الجدول على الصفحة
لقد قمت بتضمين تطبيق مبسط يتيح لك تجربة الجدولة بشكل تفاعلي على الصور أو ملفات PDF. تشغيله مع:
تثبيت النقطة Streamlit tabled_gui
من tabled.extract استيراد extract_tablesfrom tabled.fileinput استيراد Load_pdfs_imagesfrom tabled.inference.models استيراد Load_detection_models، Load_recognition_modelsdet_models، rec_models = Load_detection_models ()، Load_recognition_models () الصور، Highres_images، الأسماء، text_lines = load_pdfs_images(IN_PATH)page_results = extract_tables(images,highres_images,text_lines,det_models,rec_models)
متوسط النتيجة | الوقت لكل جدول | إجمالي الجداول |
---|---|---|
0.847 | 0.029 | 688 |
يعد الحصول على بيانات حقيقية جيدة للجداول أمرًا صعبًا، نظرًا لأنك إما مقيد بتخطيطات بسيطة يمكن تحليلها وعرضها بشكل تجريبي، أو تحتاج إلى استخدام LLMs، والتي ترتكب أخطاء. لقد اخترت استخدام تنبؤات جدول GPT-4 كحقيقة أرضية زائفة.
يحصل Tabled على درجة محاذاة تبلغ .847
مقارنةً بـ GPT-4، مما يشير إلى المحاذاة بين النص في صفوف/خلايا الجدول. ترجع بعض المحاذاة الخاطئة إلى أخطاء GPT-4، أو تناقضات صغيرة فيما يعتبره GPT-4 حدود الجدول. بشكل عام، جودة الاستخراج عالية جدًا.
يعمل على شريحة A10G مع 10 جيجابايت من استخدام VRAM وحجم الدفعة 64
، ويستغرق الجدول .029
ثانية لكل جدول.
قم بتشغيل المعيار باستخدام:
معايير بايثون/benchmark.py out.json
شكرًا لبيتر يانسن على مجموعة البيانات المعيارية وعلى المناقشة حول تحليل الجدول.
Huggingface لرمز الاستدلال واستضافة النماذج
PyTorch للتدريب/الاستدلال