如何使用 .NET 比较文本文档版本
如何使用 .NET 比较文本文档版本
比较不同扫描版的合同、表格或商业文件的文本对法律审查和遵守至关重要。
现实世界问题
版本变更的手动审查是缓慢的,容易受到人类的错误,并且不可扩展 - 特别是在处理许多文档修订或法律合同时。
解决方案概述
通过从两个或多个扫描图像中提取文本来自动进行比较,然后使用DIF逻辑来突出和记录文字变更。
原則
- Visual Studio 2019 或以后
- .NET 6.0 或更高版本(或 .Net Framework 4.6.2+)
- Aspose.OCR 为 .NET 从 NuGet
PM> Install-Package Aspose.OCR
步骤实施
步骤1:编写文档版本
string original = "contract_v1.png";
string revised = "contract_v2.png";
步骤2:从图像中识别和提取文本
RecognitionSettings settings = new RecognitionSettings();
settings.Language = Language.English;
AsposeOcr ocr = new AsposeOcr();
string originalText = ocr.Recognize(new OcrInput(InputType.SingleImage) { original }, settings)[0].RecognitionText;
string revisedText = ocr.Recognize(new OcrInput(InputType.SingleImage) { revised }, settings)[0].RecognitionText;
步骤3:比较文本和突出差异
使用文本 diff/比较图书馆(例如,DifPlex,内置逻辑)来突出差异:
using DiffPlex;
using DiffPlex.DiffBuilder;
using DiffPlex.DiffBuilder.Model;
var diffBuilder = new InlineDiffBuilder(new Differ());
var diff = diffBuilder.BuildDiffModel(originalText, revisedText);
foreach (var line in diff.Lines)
{
if (line.Type != ChangeType.Unchanged)
Console.WriteLine($"{line.Type}: {line.Text}");
}
步骤4:登录和出口比较结果
- 保存 CSV、日志文件或人可阅读的DIF报告的变更
// Example: Write all changes to a report
File.AppendAllText("text_diff_report.txt", $"{line.Type}: {line.Text}\n");
步骤5:Batch 或自动版本控制
- 在一个文件夹中比较所有版本,按需要自动化
步骤6:完整的例子
using Aspose.OCR;
using DiffPlex;
using DiffPlex.DiffBuilder;
using DiffPlex.DiffBuilder.Model;
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
string original = "contract_v1.png";
string revised = "contract_v2.png";
RecognitionSettings settings = new RecognitionSettings();
settings.Language = Language.English;
AsposeOcr ocr = new AsposeOcr();
string originalText = ocr.Recognize(new OcrInput(InputType.SingleImage) { original }, settings)[0].RecognitionText;
string revisedText = ocr.Recognize(new OcrInput(InputType.SingleImage) { revised }, settings)[0].RecognitionText;
var diffBuilder = new InlineDiffBuilder(new Differ());
var diff = diffBuilder.BuildDiffModel(originalText, revisedText);
foreach (var line in diff.Lines)
{
if (line.Type != ChangeType.Unchanged)
File.AppendAllText("text_diff_report.txt", $"{line.Type}: {line.Text}\n");
}
}
}
使用案例和应用程序
法律和遵守审查
快速检测扫描合同、政策或协议的变化。
业务过程审计
在数字档案中检测未经授权或未批准的编辑。
文档管理自动化
在扫描文档版本中保持所有变更的完整审计轨道。
共同挑战与解决方案
挑战1:微型格式化或OCR错误
** 解决方案:** 点击设置,在标志性变更上进行次要手册审查。
挑战2:大文件集
** 解决方案:** 自动和平行,记录所有结果,以便有效审计。
挑战3:错误的积极和消极
** 解决方案:** 重新定义 diff 算法,用现实世界样本验证输出。
绩效考虑
- Diff 逻辑可能在大文件上缓慢 - 监测和优化
- 安全存储所有 diff 报告,以便遵守
- 使用强大的 OCR 设置,以获得最佳识别
最佳实践
- 在所有版本中使用相同的 OCR 和扫描设置
- 批准对关键/高风险文件的差异
- 登录并备份所有报告
- 自动对关键文件进行常规版本比较
先进的场景
场景1:突出视觉输出的差异
创建记录的 PDF / 图像,以突出法律团队发现的文本变化。
场景2:自动通知关键变化
发送通知/电子邮件,如果添加/删除重要法律条款。
结论
Aspose.OCR Image Text Finder for .NET 可自动、可扩展和可审查的文档版本比较,允许法律、商业和遵守团队检测扫描文件中的关键变化。
对于更先进的比较工作流,参见 ASPOSE.OCR 为 .NET API 参考 .