เรามีความยินดีที่จะประกาศการเปิดตัว 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 ถูกอัปเดต อัปเดต

การเปลี่ยนแปลงพฤติกรรมที่ควรตรวจสอบก่อนอัปเกรด

  1. การพึ่งพาใหม่ เผยแพร่ POM จะประกาศการพึ่งพาใหม่คือ Aspose.OCR for Java ซึ่งใช้เฉพาะกับการเปรียบเทียบด้วย OCR มันนำเข้ามา ONNX Runtime พร้อมไลบรารีเนทีฟ หากคุณไม่ได้ใช้ OCR คุณสามารถยกเว้นได้ — การเปรียบเทียบอื่น ๆ ทำงานได้โดยไม่มีมัน (ดู วิธีรับการอัปเดต).
  2. การเปลี่ยนแปลงสเปรดชีต เมื่อแถวถูกแทรกหรือลบ การเปรียบเทียบสเปรดชีตจะรายงานการเปลี่ยนแปลงที่ต่างออกไป — และโดยทั่วไปน้อยกว่ามาก เพราะแถวตอนนี้จับคู่ตามเนื้อหาแล้ว
  3. การจัดวาง PDF ผลลัพธ์ PDF จะจัดวางต่างจากเดิม: ส่วนประกอบแต่ละส่วนคงอยู่ที่ตำแหน่งเดิมบนหน้าต้นฉบับ
  4. ลำดับการแทนที่ ในผลลัพธ์ข้อความและ PDF แบบอินไลน์ คำหรือวลีที่ถูกแทนที่จะอ่านคำเก่าก่อน แล้วตามด้วยคำใหม่
  5. โหมดประเมินผล ในโหมดประเมินผลจะเปรียบเทียบเฉพาะ 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

แหล่งข้อมูล