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 idCardConfigList = new ArrayList<>(2); idCardConfigList.add(new IdCardConfig()); byte[] fileContent = null; String imgBase64 = null; List data = null; Map 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 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()); } }