เรามีความยินดีที่จะประกาศการเปิดตัว GroupDocs.Comparison for Java 26.11 ซึ่งพร้อมให้บริการตั้งแต่ พฤศจิกายน 2026 ฟีเจอร์หลักคือ การเปรียบเทียบภาพด้วย OCR: ตอนนี้ภาพสามารถเปรียบเทียบได้โดยใช้ข้อความที่ตรวจจับได้ในภาพแทนการเปรียบเทียบพิกเซล การเปรียบเทียบสเปรดชีตได้รับการปรับปรุงครั้งใหญ่ — แถวจะจับคู่ตามเนื้อหา และการเปรียบเทียบแผ่นงานขนาดใหญ่ใช้เวลาเป็นวินาทีแทนหลายนาที ผลลัพธ์ PDF ตอนนี้จัดวางจากหน้าต้นฉบับเช่นเดียวกับใน GroupDocs.Comparison for .NET และชุดการแก้ไขครอบคลุมการเปรียบเทียบข้อความ, Word, พรีเซนเทชันและการแสดงตัวอย่าง HTML
สิ่งใหม่ในรุ่นนี้
| คีย์ | สรุป | ประเภท |
|---|---|---|
| COMPARISONNET-4925, COMPARISONNET-4934 | ภาพสามารถเปรียบเทียบโดยข้อความที่ตรวจจับได้ในภาพ (OCR) แทนการเปรียบเทียบพิกเซล | ฟีเจอร์ |
| COMPARISONJAVA-1798, COMPARISONNET-4940, COMPARISONNET-4945 | แถวสเปรดชีตจับคู่ตามเนื้อหา: แถวที่เพิ่มหรือถูกลบจะไม่ทำให้แถวต่อ ๆ ไปทั้งหมดถูกมาร์คว่าเปลี่ยนแปลง | การแก้ไข |
| COMPARISONJAVA-1797, COMPARISONNET-4930 | การเปรียบเทียบสเปรดชีตใช้เวลาเป็นวินาทีแทนหลายนาที; การเปรียบเทียบข้อความเร็วขึ้นในทุกฟอร์แมต | การแก้ไข |
| COMPARISONJAVA-1796, COMPARISONNET-4946 | ผลลัพธ์ XLSX: แถวที่ไม่มีความสูงของตนเองจะปรับให้พอดีกับเนื้อหา | การแก้ไข |
| COMPARISONNET-4947 | ผลลัพธ์ XLSX: ตัวเลขและวันที่ที่ไม่เปลี่ยนแปลงคงประเภทเดิมแทนที่จะกลายเป็นข้อความ | การแก้ไข |
| COMPARISONNET-4944 | StyleSettings.setHighlightColor เติมสีพื้นหลังให้กับเซลล์สเปรดชีตที่เปลี่ยนแปลง |
การแก้ไข |
| COMPARISONNET-4927, COMPARISONNET-4928, COMPARISONNET-4923 | ข้อความ: คำที่ถูกดันข้ามการขึ้นบรรทัดใหม่จะไม่ถูกบันทึกว่าเป็นการลบและแทรกใหม่ | การแก้ไข |
| COMPARISONNET-4403, COMPARISONNET-4891 | ผลลัพธ์ PDF จัดวางจากหน้าต้นฉบับ: ส่วนประกอบอยู่ในตำแหน่งเดิม, เซลล์ห่อข้อความที่ขอบของตนเอง | อัปเดต |
| COMPARISONNET-4931 | ผลลัพธ์ PDF แบบอินไลน์แสดงวลีที่ถูกแทนที่ทั้งหมด: คำเก่าแล้วตามด้วยคำใหม่ | การแก้ไข |
| COMPARISONNET-4896 | ผลลัพธ์ PDF แบบอินไลน์จะไม่ห่อบรรทัดที่การเปรียบเทียบทำให้ยาวขึ้นเล็กน้อยลงสู่บรรทัดถัดไป | การแก้ไข |
| COMPARISONNET-4763 | ผลลัพธ์ PDF จะไม่วาดตารางสีดำเหนือเส้นขอบของตารางเอง | การแก้ไข |
| — | หน้า PDF ที่วาดผ่านฟอร์ม (สเปรดชีตที่บันทึกเป็น PDF) จะไม่ถูกมองว่าไม่มีการเปลี่ยนแปลง | การแก้ไข |
| — | PDF: บรรทัดที่มีแต่ช่องว่างจะไม่ถูกบันทึกเป็นการเปลี่ยนแปลง | การแก้ไข |
| — | PDF: สารบัญจะคงเลขหน้าบนบรรทัดของมัน | การแก้ไข |
| COMPARISONNET-4926 | Word: คอลัมน์หรือแถวของตารางที่กลายเป็นว่างจะคงอยู่ในตำแหน่งแทนที่จะถูกลบและแทรกใหม่ | การแก้ไข |
| COMPARISONNET-4880 | พรีเซนเทชัน: LoadOptions.setSkipExternalResources และ setWhitelistedResources ตอนนี้ทำงาน |
การแก้ไข |
| COMPARISONNET-4935 | การแสดงตัวอย่าง HTML: การแสดงตัวอย่างพร้อมกันจะไม่เขียนทับหน้าของกันและกัน; หน้าที่ร้องขอจะได้รับการเคารพ | การแก้ไข |
| COMPARISONJAVA-1794, COMPARISONJAVA-1795 | ไลบรารี Aspose ถูกอัปเดต | อัปเดต |
การเปลี่ยนแปลงพฤติกรรมที่ควรตรวจสอบก่อนอัปเกรด
- การพึ่งพาใหม่ เผยแพร่ POM จะประกาศการพึ่งพาใหม่คือ Aspose.OCR for Java ซึ่งใช้เฉพาะกับการเปรียบเทียบด้วย OCR มันนำเข้ามา ONNX Runtime พร้อมไลบรารีเนทีฟ หากคุณไม่ได้ใช้ OCR คุณสามารถยกเว้นได้ — การเปรียบเทียบอื่น ๆ ทำงานได้โดยไม่มีมัน (ดู วิธีรับการอัปเดต).
- การเปลี่ยนแปลงสเปรดชีต เมื่อแถวถูกแทรกหรือลบ การเปรียบเทียบสเปรดชีตจะรายงานการเปลี่ยนแปลงที่ต่างออกไป — และโดยทั่วไปน้อยกว่ามาก เพราะแถวตอนนี้จับคู่ตามเนื้อหาแล้ว
- การจัดวาง PDF ผลลัพธ์ PDF จะจัดวางต่างจากเดิม: ส่วนประกอบแต่ละส่วนคงอยู่ที่ตำแหน่งเดิมบนหน้าต้นฉบับ
- ลำดับการแทนที่ ในผลลัพธ์ข้อความและ PDF แบบอินไลน์ คำหรือวลีที่ถูกแทนที่จะอ่านคำเก่าก่อน แล้วตามด้วยคำใหม่
- โหมดประเมินผล ในโหมดประเมินผลจะเปรียบเทียบเฉพาะ 2 หน้าแรกของ PDF เท่านั้น เช่นเดียวกับ GroupDocs.Comparison for .NET
ฟีเจอร์ใหม่: เปรียบเทียบภาพด้วยข้อความที่ตรวจจับได้ (OCR)
ภาพตอนนี้สามารถเปรียบเทียบโดยข้อความที่ Aspose.OCR อ่านได้ในภาพ แทนการเปรียบเทียบพิกเซล ซึ่งเหมาะกับการสแกน, ภาพถ่ายและสกรีนช็อตของเอกสาร ที่ข้อความเดียวกันไม่ทำให้พิกเซลเหมือนกัน — หน้าที่สแกนใหม่โดยเลื่อนเล็กน้อยหรือคุณภาพต่างกันจะไม่แสดงความแตกต่างทั่วทุกที่
try (Comparer comparer = new Comparer("source.png")) {
comparer.add("target.png");
OcrOptions ocr = new OcrOptions();
ocr.setEnabled(true);
ocr.setDisplayMode(OcrDisplayMode.SIDE_BY_SIDE); // or TEXT
CompareOptions options = new CompareOptions();
options.setOcr(ocr);
comparer.compare("result.png", options);
for (ChangeInfo change : comparer.getChanges()) {
OcrChangeInfo ocrChange = (OcrChangeInfo) change;
System.out.println(change.getText() + ": confidence " + ocrChange.getConfidence()
+ ", " + ocrChange.getSourceBoxes().length + " box(es) on the source");
}
}
สิ่งที่คุณสามารถควบคุมได้:
- โหมดการแสดงผล
SIDE_BY_SIDE(ค่าเริ่มต้น) แสดงภาพสองภาพเคียงกันพร้อมกล่องล้อมคำที่เปลี่ยนแปลงTEXTแสดงเฉพาะข้อความที่ตรวจจับได้ พร้อมทำเครื่องหมายการเปลี่ยนแปลงในข้อความ - รายละเอียดการเปลี่ยนแปลง การเปลี่ยนแปลงแต่ละรายการเป็น
OcrChangeInfoพร้อมกล่องที่ครอบคลุมบนภาพทั้งสอง (getSourceBoxes(),getTargetBoxes()) และระดับความเชื่อมั่นของการตรวจจับ (getConfidence()) กล่องจะว่างเปล่าในโหมดTEXT - ภาษา
setLanguage(OcrLanguage)เลือกภาษา หรือสคริปต์; ค่าเริ่มต้นคือLATINภาษาอื่นต้องใช้โมเดลการตรวจจับที่ดาวน์โหลดครั้งแรกsetDisableResourceDownloads(true)และsetResourcesPath(String)จะจำกัดการตรวจจับให้ใช้โมเดลที่มีอยู่แล้วบนดิสก์
Aspose.OCR for Java ต้องอยู่ใน classpath เป็นการพึ่งพาของ POM ที่เผยแพร่ ไม่ได้เป็นส่วนหนึ่งของ jar หากไม่มีจะทำให้การเปรียบเทียบ OCR ล้มเหลวพร้อมข้อความระบุไลบรารีที่หายไป
การเปรียบเทียบสเปรดชีต
แถวจับคู่ตามเนื้อหา
ก่อนหน้านี้ แถวจะจับคู่กับแถวที่ตำแหน่งเดียวกันในเวิร์กบุ๊กอีกไฟล์หนึ่ง เมื่อแถวถูกแทรกหรือลบ แถวทุกแถวหลังจากนั้นจะถูกบันทึกว่าเขียนทับใหม่ ตัวอย่างเช่น เวิร์กบุ๊กที่มีหกแถวและลบหนึ่งแถวทำให้เกิดการเปลี่ยนแปลง 91 รายการ; ตอนนี้เหลือ 8 รายการ — เซลล์หกเซลล์ของแถวที่ลบจะถูกมาร์คไว้ในตำแหน่งเดิม และจำนวนแถวบนแผ่นสรุป
แถวและคอลัมน์ตอนนี้จัดแนวตามเนื้อหาของเซลล์ แถวที่เหมือนกันในทั้งสองไฟล์จะจับคู่โดยตรง และเฉพาะส่วนที่อยู่ระหว่างแถวเหล่านั้นเท่านั้นที่จัดแนว จำนวนการเปลี่ยนแปลงที่รายงานสำหรับไฟล์เช่นนี้จะแตกต่างจากเวอร์ชันก่อน
วินาทีแทนนาที
การเปรียบเทียบสเปรดชีตอาจใช้เวลานาทีแม้ไฟล์จะเหมือนกัน: สเปรดชีต 200 × 20 สองแผ่นใช้เวลา 2.5 นาที ตอนนี้ใช้เวลาน้อยกว่า 1 วินาที (หลายวินาทีสำหรับการเปรียบเทียบครั้งแรกหลัง JVM เริ่ม) และแผ่น 400 × 20 ที่ลบแถวหนึ่งใช้เวลาประมาณ 7 วินาที
อัลกอริทึม diff ของคำที่อยู่เบื้องหลังการเปรียบเทียบทุกประเภทถูกทำใหม่และให้ผลลัพธ์เช่นเดิม แต่เร็วกว่าอย่างมาก — ดังนั้นการเปรียบเทียบ Word, PDF และข้อความก็ได้ประโยชน์เช่นกัน แถวและคอลัมน์ที่เหมือนกันจะจับคู่โดยไม่ให้คะแนน ดังนั้นแผ่นที่เหมือนกันสองแผ่นจะไม่ถูกจัดแนวเลย
ความสูงของแถว, ประเภทตัวเลขและสีไฮไลท์
- แถวที่ไม่มีความสูงของตนเองจะถูกปล่อยให้พอดีกับเนื้อหาในผลลัพธ์ ดังนั้นเซลล์ที่ห่อและฟอนต์ใหญ่จะไม่ถูกตัด แถวที่กำหนดความสูงอย่างชัดเจนจะคงความสูงนั้น
- ตัวเลขและวันที่ที่ไม่เปลี่ยนแปลงจะคงประเภทเดิมแทนที่จะถูกเขียนกลับเป็นข้อความ เซลล์สูตรยังคงเขียนด้วยค่าที่คำนวณได้
StyleSettings.setHighlightColorตอนนี้เติมสีพื้นหลังให้กับเซลล์ที่เปลี่ยนแปลง:
StyleSettings deleted = new StyleSettings();
deleted.setHighlightColor(Color.PINK);
CompareOptions options = new CompareOptions();
options.setDeletedItemStyle(deleted);
ผลลัพธ์ PDF
การจัดวางจากหน้าต้นฉบับ
เอนจิน PDF ตอนนี้จัดวางผลลัพธ์เช่นเดียวกับ GroupDocs.Comparison for .NET:
- ส่วนประกอบทุกส่วนของผลลัพธ์อยู่ที่ตำแหน่งเดิมบนหน้าต้นฉบับ; ภาพจะวางตามพิกัดของมันเอง และกราฟิกเวกเตอร์ของหน้า จะถูกคัดลอกไปด้วย
- ตารางจะวาดกริดของมันเอง และข้อความของแต่ละเซลล์จะห่อที่ขอบของเซลล์นั้น รวมถึงเซลล์ที่รวมกัน
- เส้นจะถูกจัดกลุ่มเป็นย่อหน้าตามระยะห่างระหว่าง baseline และขอบกระดาษจะมาจากหน้าตัวเอง
- หน้าเดียวกันในทั้งสองเอกสารจะถูกค้นพบได้ทุกตำแหน่งในเอกสาร ไม่จำกัดแค่ตอนเริ่มต้น และจะไม่ถูกเปรียบเทียบซ้ำ
ผลลัพธ์จะแตกต่างจากเวอร์ชันก่อน เนื้อหาที่ลบจะถูกวาดที่ตำแหน่งเดิมบนหน้าต้นฉบับ; หากเป้าหมายมีเนื้อหาอื่นในตำแหน่งนั้น ทั้งสองอาจทับซ้อนกัน
การแก้ไขเล็กน้อย
- วลีที่ถูกแทนที่ การแทนที่หลายคำเคยวาดทีละคู่ ทำให้ “Richard McClintock” กลายเป็น “Vasily Richard Pupkin McClintock” ตอนนี้ผลลัพธ์อินไลน์จะแสดงวลีเก่าแล้วตามด้วยวลีใหม่
- บรรทัดที่ยาวขึ้นเล็กน้อย ในผลลัพธ์อินไลน์ บรรทัดที่การแทนที่ทำให้ยาวขึ้นหนึ่งคำจะไม่ห่อคำสุดท้ายลงบรรทัดใหม่อีกบรรทัด
- กริดของตาราง เส้นขอบของตารางที่สีไม่สามารถตรวจจับได้จะไม่ถูกทาด้วยสีดำเหนือเส้นขอบของตารางต้นฉบับ
- หน้าที่วาดผ่านฟอร์ม หน้าใดก็ตามที่วาดทุกอย่างผ่านฟอร์ม (เช่นสเปรดชีตที่บันทึกเป็น PDF) ก่อนหน้านี้ถือว่าไม่มีการเปลี่ยนแปลง ตอนนี้ฟอร์มก็ถูกเปรียบเทียบด้วย จึงรายงานการเปลี่ยนแปลงของฟอร์ม
- บรรทัดว่าง บรรทัดที่มีแต่ช่องว่างจะไม่ถูกบันทึกเป็นการเปลี่ยนแปลง
- สารบัญ หมายเลขหน้าของบรรทัดสารบัญที่เปลี่ยนแปลงจะคงอยู่บนบรรทัดของมันเอง
การแก้ไขอื่น ๆ
ข้อความข้ามการขึ้นบรรทัดใหม่
การแก้ไขที่ทำให้บรรทัดของไฟล์ข้อความยาวหรือสั้นลงจะดันคำข้ามการขึ้นบรรทัดใหม่หลังจากนั้น เมื่อเปรียบเทียบแบบบรรทัดต่อบรรทัด คำเหล่านั้นจะถูกบันทึกว่าเป็นการลบจากบรรทัดหนึ่งและแทรกในบรรทัดต่อไป ตอนนี้บรรทัดจะถูกรวมกันเพื่อให้การเปลี่ยนแปลงน้อยลงกว่าเดิม เปรียบเทียบเป็นรันเดียวและจัดวางใหม่บนบรรทัดของเป้าหมาย การแทนที่จะบันทึกคำเก่าก่อนแล้วตามด้วยคำใหม่ และมุมมอง HTML ของการเปรียบเทียบข้อความจะใช้การยอมรับและปฏิเสธการเปลี่ยนแปลงเช่นเดียวกับผลลัพธ์ข้อความ การเปรียบเทียบไฟล์เดียวกับหลายเป้าหมายยังคงเปรียบเทียบแบบบรรทัดต่อบรรทัด
Word: คอลัมน์หรือแถวของตารางที่ว่างเปล่า
เมื่อคอลัมน์หรือแถวของตารางกลายเป็นว่างเปล่า ก่อนหน้านี้มันจะถูกบันทึกว่าเป็นการลบและแทรกใหม่ ทำให้เซลล์หลังจากนั้นเลื่อนตำแหน่ง ตอนนี้คอลัมน์หรือแถวนั้นคงอยู่ในตำแหน่งเดิม โดยเนื้อหาจะถูกบันทึกว่าเป็นการลบ
พรีเซนเทชัน: แหล่งข้อมูลภายนอก
LoadOptions.setSkipExternalResources และ setWhitelistedResources ที่เพิ่มใน 26.10 ก่อนหน้านี้ไม่มีผลกับพรีเซนเทชัน ตอนนี้ทำงานกับพรีเซนเทชันเช่นเดียวกับ Word และเอกสาร HTML และพรีเซนเทชันผลลัพธ์จะไม่ดึงแหล่งข้อมูลภายนอก ภาพที่ไม่โหลดได้จะถูกเปรียบเทียบเป็นภาพว่าง
การแสดงตัวอย่าง HTML
หน้าตัวอย่างของเอกสาร HTML ก่อนหน้านี้ถูกเรนเดอร์เป็นไฟล์ชื่อคงที่ในไดเรกทอรีชั่วคราว ทำให้การแสดงตัวอย่างสองหน้าพร้อมกันเขียนทับกันและหมายเลขหน้าที่ร้องขอถูกละเลย ตอนนี้หน้าจะเรนเดอร์ในหน่วยความจำ เฉพาะหน้าที่ร้องขอเท่านั้นจะถูกส่งคืน และจะเรนเดอร์บนพื้นสีขาวแทนพื้นโปร่งใส
ไลบรารี Aspose ที่อัปเดต
| ไลบรารี | ก่อน | หลัง |
|---|---|---|
| Aspose.BarCode | 25.5 | 26.6 |
| Aspose.CAD | 24.6.1 | 26.8 |
| Aspose.Cells | 26.3 | 26.9 |
| Aspose.Diagram | 25.7 | 26.9 |
| Aspose.Email | 26.1 | 26.8 |
| Aspose.PDF | 26.2 | 26.8.1 |
| Aspose.PSD | 25.10 | 26.8 |
| Aspose.Slides | 26.2 | 26.9 |
| Aspose.Words | 26.3 | 26.8 |
ไลบรารีเหล่านี้ยังคงถูกรวมอยู่ใน jar เหมือนเดิม Aspose.OCR 26.10.0 เป็นไลบรารีใหม่และมาพร้อมเป็นการพึ่งพาใน POM
วิธีรับการอัปเดต
Maven
เพิ่มรีโพซิทอรีของ GroupDocs และการพึ่งพาใน pom.xml ของคุณ:
<repositories>
<repository>
<id>groupdocs-artifacts-repository</id>
<name>GroupDocs Artifacts Repository</name>
<url>https://releases.groupdocs.com/java/repo/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-comparison</artifactId>
<version>26.11</version>
</dependency>
</dependencies>
หากคุณไม่ได้ใช้การเปรียบเทียบ OCR สามารถยกเว้น Aspose.OCR และไลบรารีเนทีฟของมันได้:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-comparison</artifactId>
<version>26.11</version>
<exclusions>
<exclusion>
<groupId>com.aspose</groupId>
<artifactId>aspose-ocr</artifactId>
</exclusion>
</exclusions>
</dependency>
ดาวน์โหลดโดยตรง
ดาวน์โหลด JAR จาก หน้าดาวน์โหลด GroupDocs.Comparison for Java 26.11