diff对比文字-----实现上传合同对比

diff对比文字-----实现上传合同对比

上传文件

| 通过file获取文件流调用第三方OCR接口进行识别文档文字 |

File testLeft = new File(“D:\测试01.doc”);
File testRight = new File(“D:\测试02.doc”);
byte[] bytesLeft = new byte[(int) testLeft.length()];
byte[] bytesRight= new byte[(int) testRight.length()];

| 调用第三方OCR接口 ,按照接口返回数据保存到List数组|

public static List post(byte[] bytes){
OkHttpClient okHttpClient = new OkHttpClient.Builder().connectTimeout(100000, TimeUnit.MILLISECONDS)
.readTimeout(100000, TimeUnit.MILLISECONDS).build();
MultipartBody.Builder builder = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart(“file”, “Y.doc”, RequestBody.create(bytes));
Request request = new Request.Builder()
.url(“http://ip:port/text/”)
.post(builder.build())
.build();
try {
Response response = okHttpClient.newCall(request).execute();
String string = response.body().string();
System.out.println(string);
//封装的返回实体类
Result res = JSONObject.parseObject(string,Result.class);
List values = res.getValues();
return values;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}

diff比较两边文档内容

List<String> left= post(bytesLeft );
List<String> right= post(bytesRight);
Patch<String> diff = DiffUtils.diff(left, right);
List<AbstractDelta> deltas = diff.getDeltas();
deltas.forEach(delta -> {
switch (delta.getType()) {
case INSERT:
//新增
Chunk<String> insert = delta.getTarget();
int position = insert.getPosition();
System.out.println(“+ " + (position + 1) + " " + insert.getLines());
break;
case CHANGE:
//修改
Chunk<String> source = delta.getSource();
Chunk<String> target1 = delta.getTarget();
System.out.println(”\n- " + (source.getPosition() + 1) + " " + source.getLines() + “\n+ " + “” + (target1.getPosition() + 1) + " " + target1.getLines());
break;
case DELETE:
//删除
Chunk<String> delete = delta.getSource();
System.out.println(”- " + (delete.getPosition() + 1) + " " + delete.getLines());
break;
case EQUAL:
// System.out.println(“无变化”);
break;
}
});

实现效果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值