การแยกวิเคราะห์เอกสาร 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);
}
}
การประยุกต์ใช้งานจริง
- Document Management Systems – ดึงเฉพาะรูปภาพที่จำเป็นจากสัญญาที่สแกนเพื่อสร้างรูปย่อ.
- Data Extraction Services – ข้ามกราฟิกตกแต่งและมุ่งเน้นที่แผนภูมิที่มีข้อมูลสำคัญ.
- 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
ทรัพยากร
- เอกสารประกอบ: GroupDocs.Parser Documentation
- อ้างอิง API: API Details
- ดาวน์โหลด: Latest Versions