แยกข้อความจากไฟล์ PDF ใน Java

แยกข้อความจากไฟล์ PDF ใน Java

ในโลกที่เปลี่ยนแปลงไปอย่างรวดเร็ว ปริมาณข้อมูลมีการขยายตัวเพิ่มขึ้นอย่างมาก ไฟล์ PDF ถูกใช้อย่างกว้างขวางในการจัดเก็บและแสดงข้อมูล เป็นการยากที่จะอ่านหน้า PDF จำนวนมากเพื่อเข้าถึงย่อหน้าที่มีประโยชน์ ดังนั้นเราจะเรียนรู้วิธีแยกข้อความจากไฟล์ PDF ใน Java โดยทางโปรแกรม อย่างไรก็ตาม การทำให้กระบวนการแยกข้อความทั้งหมดเป็นแบบอัตโนมัติจะช่วยประหยัดเวลา ความพยายาม และจะนำมาซึ่งประสิทธิภาพ เราจะใช้ [ไลบรารี PDF Java] ที่ติดตั้งง่ายซึ่งมีวิธีที่กำหนดค่าได้เพื่อทำงานกับไฟล์ PDF

ประเด็นต่อไปนี้จะกล่าวถึงในโพสต์บล็อกนี้:

ไลบรารี PDF Java - ขั้นตอนการติดตั้ง

คุณสามารถติดตั้งไลบรารีนี้ได้อย่างง่ายดายในแอปพลิเคชัน Java ของคุณโดยดาวน์โหลด ไฟล์ jar หรือคุณสามารถปฏิบัติตามการกำหนดค่า 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 ใน Java

ในส่วนนี้ เราจะเขียนขั้นตอนและข้อมูลโค้ดที่แยกข้อความจากทุกหน้าของเอกสาร PDF

ทำตามขั้นตอนต่อไปนี้:

  1. เปิดเอกสาร PDF โดยสร้างวัตถุของคลาส Document
  2. เริ่มต้นวัตถุของคลาส TextAbsorber เพื่อดำเนินการแยกข้อความ
  3. เรียกใช้เมธอด getPages() ที่ยอมรับตัวดูดซับสำหรับทุกเพจ
  4. รับข้อความที่แยกออกมาโดยการเรียกเมธอด getText()
  5. เขียนข้อความที่แยกแล้วลงในไฟล์และปิดตัวเขียน

คัดลอกและวางข้อมูลโค้ดต่อไปนี้เพื่อแยกข้อความจากเอกสาร PDF โดยทางโปรแกรม

        // เปิดเอกสาร 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);
            // เขียนบรรทัดข้อความลงในไฟล์
            writer.write(extractedText);
            // ปิดสตรีม
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

วิธีแยกข้อความจากขอบเขตของหน้าโดยเฉพาะ

library นี้ยังช่วยให้คุณสามารถแยกข้อความจากหน้าที่ต้องการของเอกสาร PDF ได้

เราจะทำตามขั้นตอนต่อไปนี้เพื่อให้บรรลุเป้าหมายนี้:

  1. สร้างออบเจ็กต์ของคลาส Document และโหลดไฟล์ PDF ต้นฉบับ
  2. สร้างอินสแตนซ์ของวัตถุของคลาส TextAbsorber เพื่อแยกข้อมูล
  3. เรียกใช้เมธอด getTextSearchOptions() ที่อนุญาตให้กำหนดสี่เหลี่ยมซึ่งคั่นข้อความที่แยกออกมา
  4. เรียกใช้ getPages() เพื่อรับชุดหน้าเอกสารและยอมรับตัวดูดซับสำหรับหน้าแรก
  5. โทร getText() เพื่อรับข้อความที่แยกออกมาและเขียนลงในไฟล์
  6. เรียกเมธอด close() เพื่อปิดสตรีม

คัดลอกและวางข้อมูลโค้ดต่อไปนี้ในไฟล์ 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. เริ่มต้นวัตถุของคลาส Document และโหลดไฟล์ PDF ต้นฉบับ
  2. สร้างวัตถุของคลาส ParagraphAbsorber
  3. โทร visit(Document doc) ที่ทำการค้นหาส่วนและย่อหน้าในเอกสารที่ระบุ
  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;
         // เรียกใช้เมธอด thsi getParagraphs() เพื่อรับการรวบรวม MarkupParagraph ที่พบในเพจ 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 ใน Java โดยทางโปรแกรมแล้ว นอกจากนี้เรายังได้ศึกษาข้อมูลโค้ดเพื่อแยกข้อความจากบริเวณหน้าใดบริเวณหนึ่ง และยังได้สำรวจการแยกข้อความในรูปแบบย่อหน้าอีกด้วย นอกจากนี้ คุณยังอาจอ่าน เอกสารประกอบ เพื่อสำรวจคุณสมบัติอื่นๆ ของ [ไลบรารี PDF Java] นี้ 2 สุดท้ายนี้ conholdate.com เขียนบล็อกโพสต์ใหม่ๆ อย่างต่อเนื่อง ดังนั้นโปรดติดต่อเพื่อรับข้อมูลอัปเดตล่าสุด

ถามคำถาม

ในกรณีที่มีข้อสงสัยใด ๆ โปรดเขียนถึงเราที่ ฟอรั่ม

ดูสิ่งนี้ด้วย