การแยกวิเคราะห์เอกสาร Java: ดึงรูปภาพจากเอกสารด้วย GroupDocs.Parser

ในคู่มือฉบับครอบคลุมนี้ คุณจะได้เรียนรู้เทคนิค java document parsing เพื่อดึงรูปภาพจากไฟล์หลายประเภทโดยใช้ GroupDocs.Parser สำหรับ Java เราจะอธิบายการตั้งค่าห้องสมุด การสร้าง ExternalResourceHandler แบบกำหนดเอง และการใช้การกรองอัจฉริยะเพื่อให้คุณโหลดทรัพยากรที่จำเป็นจริง ๆ เท่านั้น—ช่วยให้คุณ ลดการใช้หน่วยความจำ และเร่งความเร็วการประมวลผล

คำตอบด่วน

  • GroupDocs.Parser ทำอะไร? มันทำการแยกวิเคราะห์ไฟล์กว่า 50 รูปแบบ โดยเปิดเผยข้อความ รูปภาพ และทรัพยากรฝังอื่น ๆ เพื่อการใช้งานแบบโปรแกรม
  • ฉันสามารถข้ามรูปภาพที่ไม่ต้องการได้หรือไม่? ได้—ให้ทำการใช้งาน ExternalResourceHandler แบบกำหนดเองเพื่อกรองทรัพยากรแบบเรียลไทม์
  • ต้องใช้เวอร์ชัน Maven ใด? ใช้ GroupDocs.Parser Java 25.5 หรือใหม่กว่า
  • ต้องการไลเซนส์หรือไม่? การทดลองใช้ฟรีทำงานสำหรับการประเมิน; จำเป็นต้องมีไลเซนส์ถาวรสำหรับการใช้งานในสภาพแวดล้อมการผลิต
  • วิธีการนี้ปลอดภัยต่อการทำงานหลายเธรดหรือไม่? สร้างอินสแตนซ์ Parser แยกสำหรับแต่ละเธรด; วัตถุจะไม่ถูกแชร์

อะไรคือ “การดึงรูปภาพจากเอกสาร”?

การดึงรูปภาพจากเอกสารหมายถึงการดึงไฟล์รูปภาพที่ฝังอยู่ในเอกสารโดยโปรแกรม เพื่อให้คุณสามารถเก็บ, แสดงผล, หรือประมวลผลต่อได้นอกไฟล์ต้นฉบับ การดำเนินการนี้จำเป็นเมื่อคุณต้องการรูปย่อ, การแสดงข้อมูล, หรือการนำสื่อที่มีอยู่มาใช้ใหม่โดยไม่ต้องเก็บเอกสารต้นฉบับทั้งหมด

ทำไมต้องกรองทรัพยากรขณะดึงรูปภาพ?

การกรองทรัพยากรขณะดึงรูปภาพช่วยให้คุณ ลดการใช้หน่วยความจำได้สูงสุดถึง 70 % เมื่อประมวลผลไฟล์ขนาดใหญ่ เนื่องจากไบนารีที่ไม่ต้องการจะไม่เข้าสู่ heap ของ JVM นอกจากนี้ยังเพิ่มความปลอดภัยโดยป้องกันไม่ให้เนื้อหาที่อาจไม่ปลอดภัยถูกโหลด และเร่งความเร็วของกระบวนการ—สัญญาขนาดใหญ่ที่มีกราฟิกตกแต่งหลายร้อยรายการสามารถแยกวิเคราะห์ได้ในส่วนหนึ่งของเวลาต้นฉบับ

ข้อกำหนดเบื้องต้น

  • Java Development Kit (JDK) – เวอร์ชัน 8 หรือสูงกว่า.
  • Maven – สำหรับการจัดการ dependencies.
  • ความคุ้นเคยพื้นฐานกับ Java I/O และการจัดการข้อยกเว้น.

การตั้งค่า GroupDocs.Parser สำหรับ Java

เพิ่มรีโพสิตอรีของ GroupDocs และ dependency ของ parser ลงในไฟล์ pom.xml ของคุณ:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/parser/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-parser</artifactId>
      <version>25.5</version>
   </dependency>
</dependencies>

หรือดาวน์โหลดเวอร์ชันล่าสุดจาก GroupDocs.Parser for Java releases.

การรับไลเซนส์

  • Free Trial – สำรวจคุณสมบัติหลักโดยไม่เสียค่าใช้จ่าย.
  • Temporary License – ปลดล็อกฟังก์ชันเต็มในช่วงการประเมิน.
  • Purchased License – จำเป็นสำหรับการใช้งานเชิงพาณิชย์.

วิธีกรองทรัพยากรขณะดึงรูปภาพ

เพื่อกรองทรัพยากร ให้ทำการใช้งาน ExternalResourceHandler ที่กำหนดว่าควรโหลดไฟล์ฝังใดบ้าง ลงทะเบียน handler นี้ใน ParserSettings ก่อนเปิดเอกสาร จากนั้นเรียกใช้งาน parser handler จะรับ metadata ของแต่ละทรัพยากร ทำให้คุณสามารถยอมรับหรือปฏิเสธตามเกณฑ์เช่น ประเภท, ขนาด, หรือชื่อ เพื่อให้แน่ใจว่ามีการประมวลผลเฉพาะรูปภาพที่จำเป็นเท่านั้น

ขั้นตอน 1: สร้าง handler แบบกำหนดเอง

ExternalResourceHandler คืออินเทอร์เฟซที่ให้คุณตัดสินใจว่าทรัพยากรภายนอกเฉพาะ—เช่นรูปภาพ—ควรโหลดหรือไม่ Implement เมธอด onLoading และคืนค่า true สำหรับทรัพยากรที่ต้องการเก็บ, false เพื่อข้าม เมธอด onLoading จะรับ metadata ของทรัพยากรและควรคืนค่า true เพื่อโหลดหรือ false เพื่อข้ามทรัพยากร

import com.groupdocs.parser.options.ExternalResourceHandler;
import com.groupdocs.parser.data.ExternalResourceLoadingArgs;

class Handler extends ExternalResourceHandler {
    @Override
    public void onLoading(ExternalResourceLoadingArgs args) {
        if (!args.getUri().endsWith("installation.png")) {
            args.setSkipped(true);
        }
        super.onLoading(args);
    }
}

ขั้นตอน 2: กำหนดค่า ParserSettings ด้วย handler

ParserSettings คือคลาสการกำหนดค่าที่เก็บตัวเลือกต่าง ๆ เช่น handler แบบกำหนดเอง, การตั้งค่าการตรวจจับ, และการปรับประสิทธิภาพสำหรับ parser ส่งอินสแตนซ์ handler ของคุณไปยัง ParserSettings ก่อนเปิดเอกสาร

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.PageImageArea;
import com.groupdocs.parser.exceptions.IOException;
import com.groupdocs.parser.options.ParserSettings;

public class LoadExternalResources {
    public static void run() throws IOException {
        ParserSettings settings = new ParserSettings(new Handler());
        
        try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY", settings)) {
            Iterable<PageImageArea> images = parser.getImages();
            
            for (PageImageArea image : images) {
                System.out.println(image.getFileType());
            }
        }
    }
}

ขั้นตอน 3: ปรับแต่งตรรกะการกรองให้ละเอียด

หากคุณต้องการกฎที่ซับซ้อนมากขึ้น—เช่นการกรองตามขนาดรูปภาพ, รูปแบบ, หรือรูปแบบ URI—ให้ขยายเมธอด onLoading ตามนั้น ตัวอย่างเช่น คุณสามารถข้ามรูปภาพที่ใหญ่กว่า 2 MB หรือละเว้นไฟล์ PNG ทั้งหมด

@Override
public void onLoading(ExternalResourceLoadingArgs args) {
    if (!args.getUri().endsWith("installation.png")) {
        args.setSkipped(true);
    }
}

การประยุกต์ใช้งานจริง

  1. Document Management Systems – ดึงเฉพาะรูปภาพที่จำเป็นจากสัญญาที่สแกนเพื่อสร้างรูปย่อ.
  2. Data Extraction Services – ข้ามกราฟิกตกแต่งและมุ่งเน้นที่แผนภูมิที่มีข้อมูลสำคัญ.
  3. Web Scraping Tools – กรองพิกเซลติดตามขณะดึงสื่อที่มีความหมายจากเอกสารแบบ HTML.

ข้อควรพิจารณาด้านประสิทธิภาพ

Parser คือคลาสหลักที่เปิดเอกสารและให้เข้าถึงเนื้อหา

  • กรองตั้งแต่แรก: ใช้ handler แบบกำหนดของคุณก่อนทำการวนลูปทรัพยากรเพื่อหลีกเลี่ยงการโหลดข้อมูลที่ไม่ต้องการเข้าสู่หน่วยความจำ
  • ปล่อยทรัพยากรทันที: ใช้ try‑with‑resources (try (Parser parser = …)) เพื่อปล่อยทรัพยากรเนทีฟ
  • การประมวลผลแบบอะซิงโครนัส: สำหรับชุดข้อมูลขนาดใหญ่ ให้ประมวลผลเอกสารใน parallel streams โดยรักษาแต่ละอินสแตนซ์ Parser ให้ทำงานในเธรดเดียว

ปัญหาทั่วไปและวิธีแก

ปัญหาสาเหตุวิธีแก
ไม่มีรูปภาพที่ส่งคืนHandler ข้ามทรัพยากรทั้งหมดโดยไม่ได้ตั้งใจตรวจสอบเงื่อนไข if และให้แน่ใจว่า args.setSkipped(true) ถูกเรียกเฉพาะสำหรับ URI ที่ไม่ต้องการ
IOException บนไฟล์ขนาดใหญ่หน่วยความจำ heap ไม่เพียงพอเพิ่ม heap ของ JVM (-Xmx2g) หรือประมวลผลหน้าเป็นส่วนย่อยเล็กลง
ไม่สามารถจดจำไลเซนส์ใช้ DLL รุ่นทดลองกับโค้ดการผลิตกำหนดเส้นทางไฟล์ไลเซนส์ที่ถูกต้องผ่าน License.setLicense("path/to/license")

คำถามที่พบบ่อย

Q: จุดประสงค์หลักของการใช้ ExternalResourceHandler แบบกำหนดเองคืออะไร?
A: มันทำให้คุณควบคุมว่าทรัพยากรภายนอกใดจะถูกโหลด, เพิ่มความปลอดภัยและประสิทธิภาพโดยการกรองไฟล์ที่ไม่จำเป็นออก

Q: ฉันสามารถใช้ GroupDocs.Parser สำหรับ Java ได้โดยไม่ต้องมีไลเซนส์หรือไม่?
A: ได้, มีการทดลองใช้ฟรี, แต่ฟีเจอร์ขั้นสูงและการใช้งานในระดับใหญ่ต้องการไลเซนส์ที่ถูกต้อง

Q: ฉันจะจัดการกับข้อยกเว้นระหว่างการแยกวิเคราะห์ด้วย GroupDocs.Parser อย่างไร?
A: ห่อการเรียกแยกวิเคราะห์ด้วยบล็อก try‑catch สำหรับ IOException และข้อยกเว้นเฉพาะอื่น ๆ เพื่อจัดการข้อผิดพลาดอย่างราบรื่น

Q: ข้อผิดพลาดทั่วไปเมื่อกรองทรัพยากรคืออะไร?
A: การตรวจสอบ URI ที่ไม่ถูกต้องอาจทำให้ไฟล์ที่ต้องการถูกข้าม; ใช้การบันทึกหรือ breakpoint เพื่อตรวจสอบเงื่อนไขของคุณ

Q: สามารถแยกวิเคราะห์เอกสารที่ไม่ใช่ HTML ด้วย GroupDocs.Parser สำหรับ Java ได้หรือไม่?
A: แน่นอน—GroupDocs.Parser รองรับ PDF, Word, Excel, PowerPoint และรูปแบบอื่น ๆ อีกมากมาย

ขั้นตอนต่อไป

สำรวจ API Reference อย่างเต็มเพื่อดูการตั้งค่าเพิ่มเติม เช่น ParserSettings.setDetectTables(true) เพื่อดึงตาราง, หรือทดลอง ParserSettings.setExtractEmbeddedFonts(true) สำหรับการดึงฟอนต์


อัปเดตล่าสุด: 2026-06-22
ทดสอบกับ: GroupDocs.Parser 25.5 for Java
ผู้เขียน: GroupDocs

ทรัพยากร

บทแนะนำที่เกี่ยวข้อง