Java'da bir PDF Dosyasından Metin Çıkarma

Java’da bir PDF Dosyasından Metin Çıkarma

Hızla gelişen bu dünyada veri hacmi katlanarak artıyor. PDF dosyaları verileri depolamak ve temsil etmek için yoğun şekilde kullanılıyor. Yararlı paragraflara erişmek için çok sayıda PDF sayfasını gözden geçirmek zorlaşıyor. Bu nedenle, Java’da bir PDF Dosyasından programlı olarak nasıl metin çıkaracağımızı öğreneceğiz. Bununla birlikte, metin çıkarma işleminin tamamının otomatikleştirilmesi zamandan ve emekten tasarruf sağlayacak ve verimlilik sağlayacaktır. PDF dosyalarıyla çalışmak için yapılandırılabilir yöntemler sunan, kurulumu kolay bir PDF Java kitaplığı kullanacağız.

Bu blog yazısında aşağıdaki noktalar ele alınacaktır:

PDF Java kitaplığı - kurulum adımları

Bu kütüphaneyi Java uygulamanıza jar files indirerek kolaylıkla kurabilir veya aşağıdaki Maven konfigürasyonlarını takip edebilirsiniz.

Depo

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

Bağımlılık

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

Java’da bir PDF Dosyasından Metin Çıkarma

Bu bölümde bir PDF belgesinin tüm sayfalarından metin çıkaran adımları ve kod pasajını yazacağız.

Aşağıdaki adımları izleyin:

  1. Document sınıfının bir nesnesini oluşturarak bir PDF belgesi açın.
  2. Metin çıkarma işlemini gerçekleştirmek için TextAbsorber sınıfının bir nesnesini başlatın.
  3. Tüm sayfalar için emiciyi kabul eden getPages() yöntemini çağırın.
  4. Çıkarılan metni getText() yöntemini çağırarak alın.
  5. Çıkarılan metni dosyaya yazın ve yazıcıyı kapatın.

PDF belgesinden programlı olarak metin çıkarmak için aşağıdaki kod parçacığını kopyalayıp yapıştırın.

        // Document sınıfının bir nesnesini oluşturarak bir PDF belgesi açın.
        Document pdfDocument = new Document("INPUT-PDF-FILE");

        // Metin çıkarma işlemini gerçekleştirmek için bir TextAbsorber nesnesini başlatın.
        TextAbsorber textAbsorber = new TextAbsorber();

        // Tüm sayfalar için emiciyi kabul eden getPages() yöntemini çağırın.
        pdfDocument.getPages().accept(textAbsorber);

        // getText() yöntemini çağırarak çıkarılan metni alın.
        String extractedText = textAbsorber.getText();
        try {
            FileWriter writer = new FileWriter(  "PATH-FOR-OUTPUT-FILE/extracted-text.txt", true);
            // Dosyaya bir satır metin yazın
            writer.write(extractedText);
            // Akışı kapat
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

Belirli bir sayfa bölgesinden metin nasıl çıkarılır

Bu kitaplık ayrıca bir PDF belgesinin istediğiniz sayfasından metin çıkarmanıza da olanak tanır.

Bunu başarmak için aşağıdaki adımları izleyeceğiz:

  1. Document sınıfının bir nesnesini oluşturun ve kaynak PDF dosyasını yükleyin.
  2. Verileri ayıklamak için TextAbsorber sınıfının bir nesnesini oluşturun.
  3. Çıkarılan metni sınırlandıran dikdörtgeni tanımlamaya olanak tanıyan [getTextSearchOptions()]]13 yöntemini çağırın.
  4. Belge sayfalarının koleksiyonunu almak ve ilk sayfa için emiciyi kabul etmek için getPages()‘u çağırın.
  5. Çıkarılan metni almak ve dosyaya yazmak için getText()‘i çağırın.
  6. Akışı kapatmak için close() yöntemini çağırın.

Aşağıdaki kod parçacığını kopyalayıp Java dosyanıza yapıştırın:

       // Document sınıfının bir nesnesini oluşturun ve kaynak PDF dosyasını yükleyin.
        Document doc = new Document("INPUT-PDF-FILE");
        // Verileri ayıklamak için bir TextAbsorber nesnesinin örneğini oluşturun.
        TextAbsorber absorber = new TextAbsorber();
        // Çıkarılan metni sınırlayan dikdörtgenin tanımlanmasına olanak tanıyan getTextSearchOptions() yöntemini çağırın.-
        absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
        // Belge sayfalarının koleksiyonunu almak ve ilk sayfa için emiciyi kabul etmek için getPages() öğesini çağırın.
        doc.getPages().get_Item(1).accept(absorber);
        // Çıkarılan metni almak ve dosyaya yazmak için getText() öğesini çağırın
        String extractedText = absorber.getText();
        // bir yazar oluşturun ve dosyayı açın
        BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("PATH-FOR-OUTPUT-FILE/ExtractedText.txt")));
        // çıkarılan içerikleri yaz
        writer.write(extractedText);
        // Yazarı kapat
        writer.close();

PDF dosyasından paragraf biçiminde metin çıkarmak için Java kitaplığı

Bu bölümde, PDF belgelerinden paragraflar halinde veri ayıklamak için aşağıdaki adımlar ve kod parçacıkları gösterilmektedir.

  1. Document sınıfının bir nesnesini başlatın ve kaynak PDF dosyasını yükleyin.
  2. ParagraphAbsorber sınıfının bir nesnesini oluşturun.
  3. Belirtilen belgedeki bölümler ve paragraflar için arama yapan ziyaret(Belge belgesi) öğesini çağırın.
  4. Emilen PageMarkup koleksiyonunu almak için getPageMarkups()‘yı çağırın.
  5. getSections() yöntemini kullanarak sayfada bulunan MarkupSection koleksiyonunda döngü yapın.
  6. Sayfada bulunan MarkupParagraph koleksiyonunu alan bu getParagraphs() yöntemini çağırın.
  7. Paragrafın satırlarını yinelemek için getLines() yöntemini çağırın.
        // Document sınıfının bir nesnesini başlatın ve kaynak PDF dosyasını yükleyin.
        Document doc = new Document(  "./static/sample.pdf");
        // ParagraphAbsorber sınıfının bir nesnesini oluşturun.
        ParagraphAbsorber absorber = new ParagraphAbsorber();
        // Belirtilen belgedeki bölümleri ve paragrafları aramayı gerçekleştiren ziyareti(Belge belgesi) çağırın.
        absorber.visit(doc);
        // Emilen PageMarkup koleksiyonunu almak için getPageMarkups()'ı çağırın.
       for (PageMarkup markup : absorber.getPageMarkups()) {
            int i = 1;
            // GetSections() yöntemini kullanarak sayfada bulunan MarkupSection koleksiyonunda döngü yapın.
           for (MarkupSection section : markup.getSections()) {
                int j = 1;
         // Sayfada bulunan MarkupParagraph koleksiyonunu alan getParagraphs() yöntemini çağırın. https://apireference.aspose.com/pdf/java/com.aspose.pdf/PageMarkup#getParagraphs--
               for (MarkupParagraph paragraph : section.getParagraphs()) {
                    StringBuilder paragraphText = new StringBuilder();
                    // Paragrafın satırlarını yinelemek için getLines() yöntemini çağırın.
                   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++;
            }
        }

Ücretsiz Lisans Alın

Değerlendirme sınırlamaları olmaksızın API‘yi denemek için ücretsiz geçici lisans alabilirsiniz.

Özetliyor

Bu bizi bu makalenin sonuna getiriyor. Java’da bir PDF Dosyasından programlı olarak nasıl metin çıkarılacağını inceledik. Ek olarak, belirli bir sayfa bölgesinden metin çıkarmak için kod parçacıklarını inceledik ve paragraf biçiminde metin çıkarmayı da araştırdık. Ayrıca, bu PDF Java kitaplığının diğer özelliklerini keşfetmek için belgeleri inceleyebilirsiniz. Son olarak, conholdate.com sürekli olarak yeni blog yazıları yazıyor. Bu nedenle, en son güncellemeler için lütfen iletişim halinde kalın.

Bir soru sor

Herhangi bir sorunuz olması durumunda lütfen bize forum adresinden yazmaktan çekinmeyin.

Ayrıca bakınız