اذهب إلى المحتوى
  • 0

لارافيل : تعامل مع ملفات pdf وربط بالObject Storage

سالم التوبي2

السؤال

السلام عليكم ورحمة الله,

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

اصنع REST API للتعامل مع ملفات pdf بحيث تسمح برفع الملف الى Object Storage وكذلك تقرأ ملف pdf وتحوله لنصوص وتحط الجمل ف قاعدة بيانات.

1. حسب المتطلبات تعلمت كيف اسوي API باستخدام Laravel  
Github Repo https://github.com/MOGr488/Laravel_Restful_API

2. كذلك بحثت وش هو Object Storage وطلع شيء يخص الكلاود وهذا الشيء ما اعرف له. 

حسب بحثي قررت استخدم Google Cloud لل Object Storage 
3. كذلك التعامل مع ملفات pdf , طبعاً هذا الشيء اول مره اتعامل معه
حسب بحثي حصلت مكتبة اسمها https://github.com/spatie/pdf-to-text

أحتاج توضيح كيف اتعامل مع ملفات pdf وكيف انفذ المتطلب الي يقول "ابحث عن كلمة مفتاحية في الملف وارجع الجملة" 
كذلك ما اعرف ايش اسمي اسماء الجداول فكرت ف Files and Sentences 

اخزن ف  جدول Files اسم ملف و عدد الصفحات وتاريخ الرفع ( هو نفسه تاريخ التعديل )
بينما جدول Sentences احط عمود لل جمل و مفتاح وصل لجدول ملفات. 

عطني اي نصيحة وجزاكم الله خيرا.
 

هذي صورة للمتطلبات

image.thumb.png.9a1b7efd6ba8c27e822ef27a48240372.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

من الجيد أنك قمت بالبحث واختيار Google Cloud لـ Object Storage ومكتبة Spatie لتحويل PDF إلى نص، هذا يعني أنك على الطريق الصحيح.

1- بالنسبة لتحليل ملفات PDF، أنت عثرت بالفعل على مكتبة Spatie.

وفي PHP بإمكانك استخدام الدالة "text()" لتحويل الملف إلى نص، ثم يمكنك استخدام دالة "sentences()" لتقطيع النص إلى جمل.

2- وبالنسبة للجداول، يمكنك تسميتها بأي اسم تريده، ولكن من الأفضل أن تختار أسماء مناسبة وسهلة الفهم، مثل Files و Sentences.

مثلاً، اسم جدول Files هو "pdf_files"، وذلك لأن هذا الجدول يحتوي على سجلات الملفات التي تم تحميلها، بينما يمكن أن يكون اسم جدول Sentences هو "pdf_sentences"، وذلك لأنه يحتوي على سجلات الجمل المستخرجة من الملفات.

يمكن أيضاً استخدام أسماء تحوي على معنى مثل "uploaded_files" و "parsed_sentences".

3- لربط الـ Object Storage مع Laravel، يمكنك استخدام مكتبة Google Cloud Storage، وتثبيتها باستخدام Composer.

4- باستطاعتك استخدام وظيفة "upload()" لتحميل الملفات إلى Object Storage، ولإضافة سجل في قاعدة البيانات، وبإمكانك استخدام وظيفة "create()" في طراز البيانات الخاص بك.

5- لحفظ الجمل في جدول الجمل، تتوفر وظيفة "create()" أو "insert()" لإدخال كل جملة في قاعدة البيانات وربطها بملف PDF.

6- بالنسبة للبحث عن الكلمة المفتاحية في جميع الملفات، تتوفر وظيفة "where()" في Laravel للعثور على جميع الملفات التي تحتوي على الكلمة المفتاحية، ثم استخدم وظيفة "pluck()" لاسترداد معرفات الملفات فقط، ثم استخدام وظيفة "with()" لاسترداد جميع الجمل المرتبطة بكل ملف.

ولا تنسى تأمين API الخاص بك باستخدام Basic Auth وإعداد اختبارات الوحدة للتأكد من أن جميع الوظائف تعمل بشكل صحيح.

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

 الدوال لا تنتمي لمكتبة Spatie، فدالة "text()" ودالة "sentences()" تنتميان إلى مكتبة PHP الأساسية (Core PHP) ويمكن استخدامهما في أي تطبيق PHP دون الحاجة إلى تثبيت مكتبات إضافية.

ما قصدته هو استخدام مكتبة Spatie لتحويل ملفات PDF إلى نص، وقطع النص إلى جمل، وهي مكتبة PHP مفتوحة المصدر توفر العديد من الوظائف المفيدة لتطوير تطبيقات الويب.
وذلك عن طريق  وظيفة extract() التي تأخذ اسم الملف الذي تريد استخراج النص منه كمدخل، ويتم إرجاع النص كنص عادي (string) ومن ثم يمكن استخدام وظائف النص العادية في PHP مثل explode() لقطع النص إلى جمل.

مثال على ذلك:

use Spatie\PdfToText\Pdf;

// اسم الملف الذي نريد استخراج النص منه
$filename = 'file.pdf';

// استخراج النص من الملف
$text = Pdf::extract($filename);

// قطع النص إلى جمل
$sentences = explode('.', $text);

// اختبار طباعة أول جملة
echo $sentences[0];

يجب تثبيت مكتبة Spatie باستخدام Composer قبل استخدامها في التطبيق، ويمكن الاطلاع على المزيد من الوظائف التي توفرها المكتبة في الوثائق الرسمية للمكتبة على موقع GitHub.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

شكراً لردك اخ @Mustafa Suleiman

بتاريخ On 10‏/4‏/2023 at 18:09 قال Mustafa Suleiman:

وبإمكانك استخدام الدالة "text()" لتحويل الملف إلى نص، ثم يمكنك استخدام دالة "sentences()" لتقطيع النص إلى جمل.

هل هذه الدوال متواجده من مكتبة Spatie ؟ 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

شكراً للتوضيح @Mustafa Suleiman

اذا تسمح تعرف كيف اقدر اجيب عدد صفحات؟ 

حسب بحثي توصلت إلى https://stackoverflow.com/questions/14644353/get-the-number-of-pages-in-a-pdf-document

 

ومنها إلى https://github.com/howtomakeaturn/pdfinfo

 

اتبعت تعليمات بس جاتني بعض الأخطاء. 

سؤال لما اثبت مكتبة php ب composer تكون ف ملف vendor هل احتاج انقلها لمكان ثاني علشان استخدمها؟ لاني استخدمت use \Howtomakeaturn\PDFInfo\PDFInfo;

او اذا عندك طريقه ثانيه. 

 

جزاك الله خير 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...