แยกข้อความจากเอกสาร Word โดยใช้ Java

ในบางกรณี คุณอาจต้องแยกข้อความจากเอกสาร Word เพื่อวัตถุประสงค์ต่างๆ ในฐานะนักพัฒนา Java คุณสามารถแยกข้อความจากไฟล์ DOC หรือ DOCX โดยทางโปรแกรมได้อย่างง่ายดาย ในบทความนี้ คุณจะได้เรียนรู้วิธีแยกข้อความจากเอกสาร Word โดยใช้ Java

หัวข้อต่อไปนี้จะกล่าวถึง/ครอบคลุมในบทความนี้:

Java API เพื่อแยกข้อความจากเอกสาร Word

สำหรับการแยกข้อความจากไฟล์ DOC หรือ DOCX เราจะใช้ GroupDocs.Parser for Java API ช่วยให้สามารถแยกข้อความ ข้อมูลเมตา และรูปภาพจากรูปแบบไฟล์ยอดนิยมของ Word, PDF, Excel และ PowerPoint นอกจากนี้ยังรองรับการแยกข้อความดิบ ที่มีการจัดรูปแบบ และมีโครงสร้างจากไฟล์ของ รูปแบบที่รองรับ

คุณสามารถ ดาวน์โหลด JAR ของ API หรือเพียงเพิ่มการกำหนดค่า pom.xml ต่อไปนี้ในแอปพลิเคชัน Java ที่ใช้ Maven ของคุณเพื่อลองใช้ตัวอย่างโค้ดที่กล่าวถึงด้านล่าง

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>21.2</version> 
</dependency>

แยกข้อความจากเอกสาร Word โดยใช้ Java

คุณสามารถแยกวิเคราะห์เอกสาร Word และแยกข้อความได้โดยทำตามขั้นตอนง่าย ๆ ที่ระบุไว้ด้านล่าง:

  • ขั้นแรก โหลดไฟล์ DOCX โดยใช้คลาส Parser
  • จากนั้น เรียกใช้เมธอด Parser.getText() เพื่อแยกข้อความจากเอกสารที่โหลด
  • รับผลลัพธ์ของวิธี Parser.getText() ในวัตถุคลาส TextReader
  • สุดท้าย ให้เรียกเมธอด TextReader.readToEnd() เพื่ออ่านอักขระทั้งหมดตั้งแต่ตำแหน่งปัจจุบันจนถึงจุดสิ้นสุดของโปรแกรมอ่านข้อความ และส่งกลับเป็นสตริงเดียว

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแยกข้อความจากไฟล์ DOCX โดยใช้ Java

// สร้างอินสแตนซ์ของคลาส Parser
Parser parser = new Parser("C:\\Files\\sample.docx");

// แยกข้อความดิบลงในเครื่องอ่าน
try (TextReader reader = parser.getText()) {
    // พิมพ์ข้อความจากเอกสาร
    // หากไม่รองรับการแยกข้อความ โปรแกรมอ่านจะเป็นโมฆะ
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
แยกข้อความจากเอกสาร Word โดยใช้ Java

แยกข้อความจากเอกสาร Word โดยใช้ Java

แยกข้อความจากหน้าเฉพาะของเอกสาร Word โดยใช้ Java

คุณสามารถแยกวิเคราะห์เอกสาร Word และแยกข้อความจากหน้าใดหน้าหนึ่งโดยทำตามขั้นตอนง่าย ๆ ที่ระบุไว้ด้านล่าง:

  • ขั้นแรก โหลดไฟล์ DOCX โดยใช้คลาส Parser
  • จากนั้น ใช้ Parser.getFeatures().isText() เพื่อตรวจสอบว่าเอกสารรองรับฟีเจอร์การแยกข้อความหรือไม่ อ่านเพิ่มเติมเกี่ยวกับ คุณสมบัติที่รองรับ
  • ตอนนี้ เรียกใช้เมธอด Parser.getDocumentInfo() เพื่อรับข้อมูลทั่วไปเกี่ยวกับเอกสาร เช่น ประเภทไฟล์ จำนวนหน้า ขนาด เป็นต้น
  • รับผลลัพธ์ของเมธอด Parser.getDocumentInfo() ในอ็อบเจ็กต์อินเทอร์เฟซ IDocumentInfo
  • จากนั้นตรวจสอบว่า IDocumentInfo.getPageCount() ไม่เป็นศูนย์หรือไม่ วิธีนี้จะส่งคืนจำนวนหน้าเอกสารทั้งหมด
  • วนซ้ำทุกหน้าและเรียกใช้เมธอด Parser.getText() สำหรับแต่ละดัชนีหน้าเพื่อแยกข้อความและรับผลลัพธ์ในวัตถุคลาส TextReader
  • สุดท้าย แสดงผลลัพธ์โดยการเรียกเมธอด TextReader.readToEnd() เพื่ออ่านข้อความที่แยกออกมา

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแยกข้อความจากหน้าทีละหน้าโดยใช้ Java

// สร้างอินสแตนซ์ของคลาส Parser
Parser parser = new Parser("C:\\Files\\sample.docx");

// ตรวจสอบว่าเอกสารรองรับการแยกข้อความหรือไม่
if (!parser.getFeatures().isText()) {
    System.out.println("The document doesn't support text extraction.");
    return;
}

// รับข้อมูลเอกสาร
IDocumentInfo documentInfo = parser.getDocumentInfo();

// ตรวจสอบว่าเอกสารมีหน้าหรือไม่
if (documentInfo.getPageCount() == 0) {
    System.out.println("The document has zero pages.");
    return;
}

// ทำซ้ำบนหน้าต่างๆ
for (int p = 0; p < documentInfo.getPageCount(); p++) {
    // พิมพ์หมายเลขหน้า
    System.out.println(String.format("Page number: %d/%d", p + 1, documentInfo.getPageCount()));
    // แยกข้อความลงในเครื่องอ่าน
    try (TextReader reader = parser.getText(p)) {
        // พิมพ์ข้อความจากเอกสาร
        // เราเพิกเฉยต่อการตรวจสอบค่าว่างเนื่องจากเราได้ตรวจสอบการสนับสนุนคุณลักษณะการแยกข้อความแล้วก่อนหน้านี้
        System.out.println(reader.readToEnd());
    }
}
แยกข้อความจากหน้าเฉพาะของเอกสารโดยใช้ Java

แยกข้อความจากหน้าเฉพาะของเอกสารโดยใช้ Java

รับไฮไลต์จากเอกสาร Word โดยใช้ Java

ไฮไลต์เป็นส่วนหนึ่งของข้อความที่มักใช้เพื่ออธิบายบริบทของข้อความที่พบในฟังก์ชันการค้นหา คุณสามารถแยกไฮไลต์ออกจากเอกสารได้โดยทำตามขั้นตอนง่ายๆ ด้านล่างนี้:

  • ขั้นแรก โหลดไฟล์ DOCX โดยใช้คลาส Parser
  • สร้างอินสแตนซ์ของออบเจ็กต์คลาส HighlightOptions และส่งความยาวสูงสุดเป็นพารามิเตอร์อินพุตไปยังตัวสร้างเพื่อแยกไฮไลต์ที่มีความยาวคงที่
  • จากนั้น เรียกใช้เมธอด Parser.getHighlight() พร้อมตำแหน่งเริ่มต้นและอ็อบเจ็กต์คลาส HighlightOptions เพื่อแยกไฮไลต์จากเอกสารเป็นอ็อบเจ็กต์ของคลาส HighlightItem
  • สุดท้าย ให้เรียกใช้เมธอด Highlight.getPosition() และ HighlightItem.getText() เพื่อรับตำแหน่งและข้อความของไฮไลต์

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแยกไฮไลต์จากเอกสารโดยใช้ Java

// สร้างอินสแตนซ์ของคลาส Parser
try (Parser parser = new Parser("C:\\Files\\sample.docx")) {
    // แยกไฮไลท์:
    HighlightItem hl = parser.getHighlight(0, true, new HighlightOptions(8));
    // ตรวจสอบว่ารองรับการแยกไฮไลต์หรือไม่
    if (hl == null) {
        System.out.println("Highlight extraction isn't supported");
        return;
    }
    // พิมพ์ไฮไลท์ที่แยกออกมา
    System.out.println(String.format("At %d: %s", hl.getPosition(), hl.getText()));
}
At 0: Overview

แยกข้อความที่จัดรูปแบบจาก DOCX โดยใช้ Java

คุณสามารถแยกวิเคราะห์เอกสาร Word และแยกข้อความได้โดยไม่สูญเสียการจัดรูปแบบสไตล์โดยทำตามขั้นตอนง่าย ๆ ที่ระบุไว้ด้านล่าง:

  • ขั้นแรก โหลดไฟล์ DOCX โดยใช้คลาส Parser
  • กำหนด FormattedTextOptions และตั้งค่า FormattedTextMode เป็น HTML ช่วยให้คุณสามารถแยกข้อความที่จัดรูปแบบ HTML ออกจากเอกสารได้
  • จากนั้น เรียกใช้เมธอด Parser.getFormattedText() เพื่อแยกข้อความที่จัดรูปแบบ
  • รับผลลัพธ์ของวิธี Parser.getText() ในวัตถุคลาส TextReader
  • สุดท้าย ให้เรียกเมธอด TextReader.readToEnd() เพื่ออ่านข้อความทั้งหมด

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแยกข้อความที่จัดรูปแบบแล้วจากไฟล์ DOCX โดยใช้ Java

// สร้างอินสแตนซ์ของคลาส Parser
try (Parser parser = new Parser("C:\\Files\\sample.docx")) {
    // แยกข้อความที่จัดรูปแบบลงในเครื่องอ่าน
    try (TextReader reader = parser.getFormattedText(new FormattedTextOptions(FormattedTextMode.Html))) {
        // พิมพ์ข้อความที่จัดรูปแบบจากเอกสาร
        // หากไม่รองรับการแยกข้อความที่จัดรูปแบบ โปรแกรมอ่านจะเป็นค่าว่าง
        System.out.println(reader == null ? "Formatted text extraction isn't suppported" : reader.readToEnd());
    }
}
แยกข้อความที่จัดรูปแบบจาก DOCX โดยใช้ Java

แยกข้อความที่จัดรูปแบบจาก DOCX โดยใช้ Java

แยกข้อความตามสารบัญโดยใช้ Java

คุณสามารถแยกข้อความจากเอกสารตามสารบัญโดยทำตามขั้นตอนง่าย ๆ ที่ระบุไว้ด้านล่าง:

  • ขั้นแรก โหลดไฟล์ DOCX โดยใช้คลาส Parser
  • จากนั้น เรียกใช้เมธอด Parser.getToc() เพื่อแยกสารบัญเป็นคอลเลกชันของอ็อบเจ็กต์คลาส TocItem TocItem แสดงถึงรายการที่ใช้ในฟังก์ชันการแยกสารบัญ
  • ตอนนี้ตรวจสอบว่าคอลเลกชันไม่เป็นโมฆะหรือไม่
  • จากนั้น วนซ้ำคอลเลกชันของ TocItem และเรียกใช้เมธอด TocItem.extractText() เพื่อแยกข้อความจากเอกสารที่อ็อบเจ็กต์ [TocItem] อ้างอิงถึง
  • รับผลลัพธ์ในวัตถุคลาส TextReader
  • สุดท้าย ให้เรียกเมธอด TextReader.readToEnd() เพื่ออ่านข้อความทั้งหมด

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแยกข้อความตามสารบัญจากเอกสาร Word โดยใช้ Java

// สร้างอินสแตนซ์ของคลาส Parser
try (Parser parser = new Parser("C:\\Files\\sampleTOC.docx")) {
    // รับสารบัญ
    Iterable<TocItem> tocItems = parser.getToc();
    // ตรวจสอบว่ารองรับการแตกไฟล์ toc หรือไม่
    if (tocItems == null) {
        System.out.println("Table of contents extraction isn't supported");
    }
    else
    {
        // ทำซ้ำรายการต่างๆ
       for (TocItem tocItem : tocItems) {
            // พิมพ์ข้อความของบท
            try (TextReader reader = tocItem.extractText()) {
                System.out.println("----");
                System.out.println(reader.readToEnd());
            }
        }
    }
}
แยกข้อความตามสารบัญโดยใช้ Java

แยกข้อความตามสารบัญโดยใช้ Java

รับใบอนุญาตฟรี

คุณสามารถลองใช้ API ได้โดยไม่มีข้อจำกัดในการประเมินโดยขอ ใบอนุญาตชั่วคราวฟรี

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีแยกข้อความจากเอกสาร Word โดยใช้ Java แล้ว นอกจากนี้ คุณได้เห็นวิธีการแยกข้อความที่จัดรูปแบบแล้วจากไฟล์ DOCX โดยทางโปรแกรมแล้ว บทความนี้ยังอธิบายวิธีการแยกข้อความตามสารบัญและแยกไฮไลท์ออกจากเอกสาร นอกจากนี้ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ GroupDocs.Parser สำหรับ Java API ได้โดยใช้ เอกสารประกอบ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราที่ ฟอรั่ม

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