متن را از یک فایل PDF در Java استخراج کنید

متن را از یک فایل PDF در Java استخراج کنید

در این جهان پرشتاب، حجم داده‌ها به طور نمایی در حال گسترش است. PDF فایل‌ها به شدت برای ذخیره و نمایش داده‌ها استفاده می‌شوند. مرور تعداد زیادی از صفحات PDF برای دسترسی به پاراگراف‌های مفید دشوار می‌شود. بنابراین، ما یاد خواهیم گرفت که چگونه به صورت برنامه‌نویسی متن را از یک فایل PDF در Java استخراج کنیم. با این حال، خودکار کردن کل فرایند استخراج متن زمان، تلاش و کارایی را صرفه‌جویی خواهد کرد. ما از یک کتابخانه PDF جاوا که روش‌های قابل تنظیمی برای کار با فایل‌های PDF ارائه می‌دهد، استفاده خواهیم کرد.

نکات زیر در این پست وبلاگی پوشش داده خواهد شد:

کتابخانه PDF Java - مراحل نصب

شما می‌توانید این کتابخانه را به راحتی در برنامه Java خود با دانلود jar files نصب کنید، یا می‌توانید پیکربندی‌های Maven زیر را دنبال کنید.

Repository

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

Dependency

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

متن را از یک فایل PDF در Java استخراج کنید

در این بخش، ما مراحل و قطعه کدی را می‌نویسیم که متن را از تمام صفحات یک سند PDF استخراج می‌کند.

مراحل زیر را دنبال کنید:

  1. یک سند PDF را با ایجاد یک شی از کلاس Document باز کنید.
  2. یک شیء از کلاس TextAbsorber را برای انجام استخراج متن اولیه کنید.
  3. متد getPages() را فراخوانی کنید که جاذب را برای تمام صفحات قبول می‌کند.
  4. متن استخراج شده را با فراخوانی getText() متد به دست آورید.
  5. متن استخراج شده را به فایل بنویسید و نویسنده را ببندید.

Copy and paste the following code snippet to extract text from PDF document programmatically.

        // یک سند PDF را با ایجاد یک شی از کلاس Document باز کنید.
        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);
            // Write a line of text to the file
            writer.write(extractedText);
            // بسته کردن استریم
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

چگونه متن را از یک منطقه صفحه خاص استخراج کنیم

این library همچنین به شما این امکان را می‌دهد که متن را از صفحهٔ مورد نظر یک سند PDF استخراج کنید.

ما مراحل زیر را برای دستیابی به این هدف دنبال خواهیم کرد:

  1. یک شی از کلاس Document ایجاد کنید و یک فایل PDF منبع را بارگذاری کنید.
  2. یک شی از کلاس TextAbsorber برای استخراج داده‌ها ایجاد کنید.
  3. از روش getTextSearchOptions() استفاده کنید که به شما امکان می‌دهد مستطیلی را که متن استخراج شده را محدود می‌کند مشخص کنید.
  4. Invoke getPages() to get the collection of document pages and accept the absorber for the first page.
  5. Call getText() to get the extracted text and write it to the file.
  6. Call close() method to close the stream.

کد زیر را در فایل Java خود کپی و پیست کنید:

       // یک شی از کلاس Document ایجاد کنید و یک فایل PDF منبع را بارگذاری کنید.
        Document doc = new Document("INPUT-PDF-FILE");
        // یک شی از TextAbsorber برای استخراج داده‌ها ایجاد کنید.
        TextAbsorber absorber = new TextAbsorber();
        // call getTextSearchOptions() method that allows to define rectangle which delimits the extracted text.-
        absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
        // invoke getPages() to get the collection of document pages and accept the absorber for first page.
        doc.getPages().get_Item(1).accept(absorber);
        // Call getText() to get the extracted text and write it to the file
        String extractedText = absorber.getText();
        // یک نویسنده ایجاد کنید و فایل را باز کنید
        BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("PATH-FOR-OUTPUT-FILE/ExtractedText.txt")));
        // write extracted contents
        writer.write(extractedText);
        // Close writer
        writer.close();

کتابخانه Java برای استخراج متن از فایل PDF به صورت پاراگراف ها

این بخش مراحل زیر و کدهای نمونه را برای استخراج داده‌ها از اسناد PDF در پاراگراف‌ها نشان می‌دهد.

  1. یک شی از کلاس Document ایجاد کنید و یک فایل PDF منبع را بارگذاری کنید.
  2. یک شیء از کلاس ParagraphAbsorber ایجاد کنید.
  3. Call visit(Document doc) که جستجویی برای بخش‌ها و پاراگراف‌ها در سند مشخص شده انجام می‌دهد.
  4. Invoke getPageMarkups() to gets collection of PageMarkup that were absorbed.
  5. از مجموعه MarkupSection که در صفحه با استفاده از روش getSections() پیدا شده است، عبور کنید.
  6. این getParagraphs() متدی را فراخوانی کنید که مجموعه ای از MarkupParagraph را که در صفحه پیدا شده است، دریافت می کند.
  7. Call getLines() method to iterate lines of the paragraph.
        // یک شیء از کلاس Document را مقداردهی اولیه کنید و یک فایل PDF منبع را بارگذاری کنید.
        Document doc = new Document(  "./static/sample.pdf");
        // یک شی از کلاس ParagraphAbsorber ایجاد کنید.
        ParagraphAbsorber absorber = new ParagraphAbsorber();
        // Call visit(Document doc) that performs search for sections and paragraphs on the specified document.
        absorber.visit(doc);
        // Invoke getPageMarkups() to gets collection of PageMarkup that were absorbed.
       for (PageMarkup markup : absorber.getPageMarkups()) {
            int i = 1;
            // از متد getSections() برای عبور از مجموعه MarkupSection که در صفحه پیدا شده است استفاده کنید.
           for (MarkupSection section : markup.getSections()) {
                int j = 1;
         // Invoke thsi getParagraphs() methid that gets collection of MarkupParagraph that was found on the page.      [https://apireference.aspose.com/pdf/java/com.aspose.pdf/PageMarkup#getParagraphs--](https://apireference.aspose.com/pdf/java/com.aspose.pdf/PageMarkup#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 متن استخراج کنیم. علاوه بر این، ما قطعه کدهایی را بررسی کردیم تا متن را از یک ناحیه صفحه خاص استخراج کنیم و همچنین استخراج متن به صورت پاراگرافی را بررسی کردیم. بعلاوه، شما می‌توانید به documentation مراجعه کنید تا ویژگی‌های دیگر این PDF Java library را کاوش کنید. در نهایت، conholdate.com به‌طور مداوم پست‌های جدید وبلاگ را می‌نویسد. بنابراین، لطفاً برای آخرین به‌روزرسانی‌ها در ارتباط باشید.

Ask a question

در صورت داشتن هرگونه سوال لطفاً با خیال راحت با ما در forum تماس بگیرید.

به همچنین نگاه کنید