package com.iplatform.openocr;
|
|
import com.walker.infrastructure.utils.Base64;
|
import com.walker.infrastructure.utils.FileUtils;
|
import com.walker.openocr.OcrType;
|
import com.walker.openocr.TextBlock;
|
import com.walker.openocr.idcard.IdCardConfig;
|
import com.walker.openocr.idcard.IdCardObject;
|
import com.walker.openocr.idcard.IdCardTextResolver;
|
import com.walker.openocr.table.CellObject;
|
import com.walker.openocr.table.TableConfig;
|
import com.walker.openocr.table.TableObject;
|
import com.walker.openocr.table.TableTextResolver;
|
import com.walker.openocr.table.config.FileConfigLoader;
|
import com.walker.openocr.vehicle.VehicleLicenseResolver;
|
import com.walker.openocr.vehicle.VehicleLicenseTable;
|
import org.junit.Test;
|
|
import java.io.File;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
public class TestOcrRun {
|
|
// @Test
|
public void TestRemoteAndParse(){
|
|
// 创建OCR引擎对象(初始化,无需重复创建)
|
TestOcrEngine ocrEngine = new TestOcrEngine();
|
// ocrEngine.setRemoteUrl("http://127.0.0.1:8803/ai/ocr/table");
|
ocrEngine.setRemoteUrl("http://116.198.39.83:8803/ai/ocr/table");
|
// ocrEngine.setRemoteUrl("http://101.43.168.96:8803/ai/ocr/table");
|
ocrEngine.startup();
|
|
List<IdCardConfig> idCardConfigList = new ArrayList<>(2);
|
idCardConfigList.add(new IdCardConfig());
|
|
byte[] fileContent = null;
|
String imgBase64 = null;
|
List<TextBlock> data = null;
|
Map<String, CellObject> tableData = null;
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
//~ 表格解析
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// 1.请求识别服务
|
/*fileContent = FileUtils.getFileBytes(new File("D:/dev_tools/ai/demo_table_01.jpg"));
|
imgBase64 = new String(Base64.encodeBase64(fileContent));
|
data = ocrEngine.recognize("1", imgBase64); // id为业务唯一标识,存储图片拼接路径使用
|
System.out.println("返回识别结果:" + data == null ? "" : data.size());
|
|
// 2.解析表格内容
|
TableTextResolver tableTextResolver = (TableTextResolver)ocrEngine.getTextResolver(OcrType.TextTable);
|
if(tableTextResolver == null){
|
System.out.println("没有配置表格解析器:");
|
return;
|
}
|
|
// 3.获取表格数据
|
TableObject tableObject = tableTextResolver.resolve(data, ocrEngine.getTableConfigList());
|
if(tableObject == null){
|
System.out.println("没有解析到任何表格数据");
|
return;
|
}
|
|
tableData = tableObject.getTableDataMap();
|
if(tableData != null){
|
for(CellObject co : tableData.values()){
|
System.out.println(co);
|
}
|
System.out.println("----------->>>>>" + tableData.get("na_shui_ren"));
|
}*/
|
// tableObject.getRecognizeConfig().getTableTitle();
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
//~ 身份证解析
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// 1.请求识别服务
|
fileContent = FileUtils.getFileBytes(new File("D:/dev_tools/ai/sfz02.jpg"));
|
imgBase64 = new String(Base64.encodeBase64(fileContent));
|
data = ocrEngine.recognize("sfz", imgBase64);
|
|
// 2.解析表格内容
|
IdCardTextResolver idCardTextResolver = (IdCardTextResolver)ocrEngine.getTextResolver(OcrType.TextIdCard);
|
if(idCardTextResolver == null){
|
System.out.println("没有配置'身份证'解析器:");
|
return;
|
}
|
|
// 3.获取身份证数据:目前仅支持正面
|
IdCardObject idCardObject = idCardTextResolver.resolve(data, idCardConfigList);
|
if(idCardObject == null){
|
System.out.println("没有解析到任何 身份证 数据");
|
return;
|
}
|
System.out.println("姓名:" + idCardObject.getName());
|
System.out.println("性别:" + idCardObject.getSex());
|
System.out.println("民族:" + idCardObject.getNation());
|
System.out.println("出生:" + idCardObject.getBirthday());
|
System.out.println("住址:" + idCardObject.getAddress());
|
System.out.println("身份证号码:" + idCardObject.getCardNo());
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
//~ 行驶证解析,2022-09-30
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// FileConfigLoader vehicleConfig = new FileConfigLoader();
|
// TableConfig tableConfig = vehicleConfig.load("D:/dev_tools/workspace_2022/iplatform/iplatform-ml-openocr/src/test/resources/vehicle_license_config.txt");
|
//
|
// List<TableConfig> tableConfigs = new ArrayList<>(2);
|
// tableConfigs.add(tableConfig);
|
//
|
// // 初始化解析器(单例即可)
|
// VehicleLicenseResolver vehicleLicenseResolver = new VehicleLicenseResolver();
|
//
|
// fileContent = FileUtils.getFileBytes(new File("D:/dev_tools/ai/xsz_1.jpg"));
|
// imgBase64 = new String(Base64.encodeBase64(fileContent));
|
// data = ocrEngine.recognize("xsz001", imgBase64);
|
//
|
// VehicleLicenseTable vehicleTableObject = (VehicleLicenseTable) vehicleLicenseResolver.resolve(data, tableConfigs);
|
// tableData = vehicleTableObject.getTableDataMap();
|
// if(tableData != null){
|
// for(CellObject co : tableData.values()){
|
// System.out.println(co);
|
// }
|
// System.out.println("-----------号牌号码: " + tableData.get("hao_pai_hao_ma"));
|
// }
|
// // 识别图片中的盖章内容
|
// fileContent = FileUtils.getFileBytes(new File("D:/dev_tools/ai/红章-示例.png"));
|
// imgBase64 = new String(Base64.encodeBase64(fileContent));
|
// data = ocrEngine.recognize("10", imgBase64); // id为业务唯一标识,存储图片拼接路径使用
|
// System.out.println("返回识别结果:" + data == null ? "" : data.size());
|
}
|
}
|