سؤال

لدي مجموعة كبيرة جدا من ملف PDF (200,000 كيلوبايت أو أكثر) الذي يحتوي على سلسلة من الصفحات التي تحتوي على أي شيء ولكن الجداول.أود أن بطريقة أو بأخرى تحليل هذه المعلومات باستخدام روبي و استيراد البيانات الناتجة إلى قاعدة بيانات MySQL.

لا أحد يعرف من أي طرق سحب هذه البيانات من PDF ؟ البيانات تم تنسيقه بالطريقة التالية:

الاسم | العنوان | النقدية ذكرت في السنة ذكرت | حامل الاسم

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

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

تحديث:أنا بطريق الخطأ قدمت معلومات غير صحيحة!الفعلية حجم الملف 300 ميجا بايت ، أو 300,000 كيلو بايت.أنا جعلت تغيير أعلاه أن تعكس هذا.

هل كانت مفيدة؟

المحلول

افترض يمكنك نسخ'n'paste قصاصات النص دون مشاكل عندما PDF فتح Acrobat Reader أو عارض PDF?

قبل محاولة تحليل استخراج النص من هذا الوحش الملفات برمجيا (حتى لو كان 200 ميغابايت فقط-على نص بسيط في الجداول التي huuuuge, إلا إذا كان لديك 200000 صفحات...), وأود أن تشرع مثل هذا:

  1. محاولة تطهير الملف أولا قبل إعادة استخلاص ذلك.
  2. حاول مع مختلف CLI أدوات لاستخراج النص إلى .ملف txt.

هذه مسألة دقيقة.كتابة روبي البرنامج هل هذا هو بالتأكيد مسألة ساعات أو أيام أو أسابيع (اعتمادا على معلوماتك عن PDF fileformat الداخلية...وأظن أنك لا تملك الكثير من الخبرة من ذلك حتى الآن).

إذا "2." ، قد منتصف الطريق ينبغي القيام به بالفعل.إذا كان يعمل, أنت تعرف أيضا أن تفعل ذلك برمجيا مع روبي هو العمل الذي يمكن من حيث المبدأ أن حلها.إذا "2." لا أعرف أنه قد يكون من الصعب للغاية لتحقيق برمجيا.

تطهير 'الوحش.pdf':

أقترح استخدام غوستسكريبت.يمكنك أيضا استخدام Adobe Acrobat Distiller إذا كان لديك الوصول إلى ذلك.

gswin32c.exe ^
  -o Monster-PDF-sanitized ^
  -sDEVICE=pdfwrite ^
  -f Monster.pdf

(أنا الغريب كم واحد الأمر سيجعل PDF الناتج يتقلص مقارنة المدخلات.)

استخراج النص من ملف PDF:

أقترح أن أول محاولة pdftotext.exe (من XPDF الناس).هناك أخرى, أكثر قليلا غير مريح الطرق المتاحة أيضا ، ولكن هذا يمكن القيام بهذه المهمة بالفعل:

pdftotext.exe ^
   -f 1 ^
   -l 10 ^
   -layout ^
   -eol dos ^
   -enc Latin1 ^
   -nopgbrk ^
   Monster-PDF-sanitized.pdf ^
   first-10-pages-from-Monster-PDF-sanitized.txt

هذا لن استخراج جميع الصفحات ولكن فقط 1-10 (إثبات المفهوم ، لمعرفة ما إذا كان يعمل على الإطلاق).إلى استخراج من كل صفحة ، مجرد ترك قبالة -f 1 -l 10 معلمة.قد تحتاج إلى قرص الترميز عن طريق تغيير المعلمة -enc ASCII7 (أو UTF-8, UCS-2).

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

نصائح أخرى

على الأقل يمكن لأي شخص نقطة لي روبي PDF المكتبة لهذا المهمة ؟

إذا كنت لم تكن قد فعلت ذلك ، يجب أن تحقق اثنين من الأسئلة السابقة:"روبي:قراءة ملفات PDF"،و "روبي pdf تحليل gem/مكتبة." PDF::القارئ, PDF::أدوات, ، Docsplit هي بعض من شعبية نسبيا اقترح المكتبات.بل هناك اقتراح باستخدام JRuby وبعض جافا PDF مكتبة محلل.

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

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

جافا المكتبات هي أقوى ، قد تفعل أكثر من مجرد استخراج النص.لذلك أود أن ننظر إلى JRuby و iText أو PDFbox.

تحقق ما إذا كان هناك أي محتوى منظم في PDF.كتبت بلوق المادة شرح هذا في http://www.jpedal.org/PDFblog/?p=410

إذا لم يكن, سوف تحتاج إلى بناء عليه.

ربما الجمبري روبي المكتبة ؟ وصلة النص

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top