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

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

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

سيتم تغطية النقاط التالية في منشور المدونة هذا:

مكتبة جافا PDF - خطوات التثبيت

يمكنك تثبيت هذه المكتبة بسهولة في تطبيق Java الخاص بك عن طريق تنزيل jar files ، أو يمكنك اتباع تكوينات Maven التالية.

مخزن

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

الاعتماد

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.12</version>
    <classifier>jdk17</classifier>
</dependency>

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

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

اتبع الخطوات التالية:

  1. افتح مستند PDF عن طريق إنشاء كائن من فئة Document.
  2. تهيئة كائن من فئة TextAbsorber لأداء استخلاص النص.
  3. قم باستدعاء طريقة getPages () التي تقبل الممتص لجميع الصفحات.
  4. احصل على النص المستخرج باستدعاء طريقة getText ().
  5. اكتب النص المستخرج إلى الملف وأغلق الكاتب.

انسخ والصق مقتطف الشفرة التالي لاستخراج النص من مستند PDF برمجيًا.

        // افتح مستند PDF عن طريق إنشاء كائن من فئة المستند.
        Document pdfDocument = new Document("INPUT-PDF-FILE");

        // تهيئة كائن TextAbsorber لإجراء استخراج النص.
        TextAbsorber textAbsorber = new TextAbsorber();

        // قم باستدعاء طريقة getPages () التي تقبل الممتص لجميع الصفحات.
        pdfDocument.getPages().accept(textAbsorber);

        // احصل على النص المستخرج عن طريق استدعاء طريقة getText ().
        String extractedText = textAbsorber.getText();
        try {
            FileWriter writer = new FileWriter(  "PATH-FOR-OUTPUT-FILE/extracted-text.txt", true);
            // اكتب سطرًا من النص في الملف
            writer.write(extractedText);
            // أغلق الدفق
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

كيفية استخراج نص من منطقة صفحة معينة

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

سوف نتبع الخطوات التالية لتحقيق ذلك:

  1. قم بإنشاء كائن من فئة Document وتحميل ملف PDF المصدر.
  2. إنشاء كائن من فئة TextAbsorber لاستخراج البيانات.
  3. استدعاء getTextSearchOptions () الأسلوب الذي يسمح بتعريف المستطيل الذي يحدد النص المستخرج.
  4. قم باستدعاء getPages () للحصول على مجموعة صفحات المستند وقبول أداة امتصاص الصفحة الأولى.
  5. اتصل بـ getText () للحصول على النص المستخرج وكتابته في الملف.
  6. استدعاء طريقة () لإغلاق الدفق.

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

       // إنشاء كائن من فئة المستند وتحميل ملف PDF المصدر.
        Document doc = new Document("INPUT-PDF-FILE");
        // إنشاء كائن من TextAbsorber لاستخراج البيانات.
        TextAbsorber absorber = new TextAbsorber();
        // استدعاء getTextSearchOptions () طريقة تسمح بتعريف المستطيل الذي يحدد النص المستخرج. -
        absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
        // قم باستدعاء getPages () للحصول على مجموعة صفحات المستند وقبول أداة امتصاص الصفحة الأولى.
        doc.getPages().get_Item(1).accept(absorber);
        // اتصل بـ getText () للحصول على النص المستخرج واكتبه في الملف
        String extractedText = absorber.getText();
        // قم بإنشاء كاتب وافتح الملف
        BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("PATH-FOR-OUTPUT-FILE/ExtractedText.txt")));
        // كتابة المحتويات المستخرجة
        writer.write(extractedText);
        // كاتب مقرب
        writer.close();

مكتبة Java لاستخراج نص من ملف PDF في شكل فقرات

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

  1. قم بتهيئة كائن من فئة المستند وتحميل ملف PDF المصدر.
  2. قم بإنشاء كائن من ParagraphAbsorber class.
  3. استدعاء زيارة (مستند مستند) لإجراء بحث عن أقسام وفقرات في المستند المحدد.
  4. قم باستدعاء getPageMarkups () للحصول على مجموعة من PageMarkup التي تم استيعابها.
  5. قم بالتكرار خلال مجموعة MarkupSection التي تم العثور عليها في الصفحة باستخدام طريقة getSections ().
  6. قم باستدعاء طريقة getParagraphs () التي تحصل على مجموعة MarkupParagraph التي تم العثور عليها في الصفحة.
  7. قم باستدعاء طريقة getLines () لتكرار سطور الفقرة.
        // قم بتهيئة كائن من فئة المستند وتحميل ملف PDF المصدر.
        Document doc = new Document(  "./static/sample.pdf");
        // قم بإنشاء كائن من فئة ParagraphAbsorber.
        ParagraphAbsorber absorber = new ParagraphAbsorber();
        // زيارة الاتصال (مستند مستند) التي تقوم بالبحث عن أقسام وفقرات في المستند المحدد.
        absorber.visit(doc);
        // قم باستدعاء getPageMarkups () للحصول على مجموعة PageMarkup التي تم استيعابها.
        for (PageMarkup markup : absorber.getPageMarkups()) {
            int i = 1;
            // قم بالتكرار خلال مجموعة MarkupSection التي تم العثور عليها في الصفحة باستخدام طريقة getSections ().
            for (MarkupSection section : markup.getSections()) {
                int j = 1;
         // قم باستدعاء طريقة getParagraphs () التي تحصل على مجموعة MarkupParagraph التي تم العثور عليها في الصفحة. https://reference.aspose.com/pdf/java/com.aspose.pdf/page/Markup#getParagraphs--
                for (MarkupParagraph paragraph : section.getParagraphs()) {
                    StringBuilder paragraphText = new StringBuilder();
                    // قم باستدعاء طريقة getLines () لتكرار سطور الفقرة.
                    for (java.util.List<TextFragment> line : paragraph.getLines()) {
                        for (TextFragment fragment : line) {
                            paragraphText.append(fragment.getText());
                        }
                        paragraphText.append("\r\n");
                    }
                    paragraphText.append("\r\n");

                    System.out.println("Paragraph "+j+" of section "+ i + " on page"+ ":"+markup.getNumber());
                    System.out.println(paragraphText.toString());

                    j++;
                }
                i++;
            }
        }

احصل على رخصة مجانية

يمكنك الحصول على ترخيص مؤقت مجاني لتجربة API بدون قيود تقييم.

تلخيص لما سبق

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

طرح سؤال

في حالة وجود أي استفسار ، فلا تتردد في مراسلتنا على المنتدى.

أنظر أيضا