package foundation.ai; import java.io.File; import com.alibaba.fastjson.JSONObject; import foundation.action.ActionProvider; import foundation.ai.dao.VatInvoiceVerifyDao; import foundation.ai.logic.VatInvoiceVerifyLogic; import foundation.io.FileCenter; import foundation.io.object.FileRecord; import foundation.util.Util; public class OCRHandler extends ActionProvider { @Override protected void publishMethod() { //1. bizLicense addMethod("bizLicense"); //2. enterpriseLicense addMethod("enterpriseLicense"); //3. orgCodeCert addMethod("orgCodeCert"); //4. institution addMethod("institution"); //5. idCard addMethod("idCard"); //6. textAccurate addMethod("textAccurate"); //7. textCommon //不行 addMethod("textCommon"); //8. textFast //不行 addMethod("textFast"); //9. invoiceValidate addMethod("invoiceIdentify2"); //10. BankSlip 银行回单识别 addMethod("bankSlip"); //11. Invoice verification--发票验真 addMethod("invoiceVerification2"); //12. Invoice Identify--发票识别 addMethod("invoiceIdentify"); //13. getInvoiceIdentifyByCode--获取发票信息 addMethod("getInvoiceIdentifyByCode"); //14. Invoice verification--发票验真 addMethod("invoiceVerification"); //15. invoiceIdentifyAndVerification--发票识别及核验 addMethod("invoiceIdentifyAndVerification"); } public void bizLicense() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); dataWriter.addValue("upload", fileRecord); //2. OCR识别 File file = fileRecord.getFile(); OCRResult ocrResult = AICenter.execOCR(Operator.BizLicense, file); dataWriter.addValue("ocr", ocrResult); } public void enterpriseLicense() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); dataWriter.addValue("upload", fileRecord); //2. OCR识别 File file = fileRecord.getFile(); OCRResult ocrResult = AICenter.execOCR(Operator.EnterpriseLicense, file); if (!"fail".equalsIgnoreCase(ocrResult.getJson())) { dataWriter.addValue("ocr", ocrResult); } } public void orgCodeCert() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); dataWriter.addValue("upload", fileRecord); //2. OCR识别 File file = fileRecord.getFile(); OCRResult ocrResult = AICenter.execOCR(Operator.OrgCodeCert, file); dataWriter.addValue("ocr", ocrResult); } public void institution() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); dataWriter.addValue("upload", fileRecord); //2. OCR识别 File file = fileRecord.getFile(); OCRResult ocrResult = AICenter.execOCR(Operator.Institution, file); dataWriter.addValue("ocr", ocrResult); } public void idCard() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); dataWriter.addValue("upload", fileRecord); //2. OCR识别 File file = fileRecord.getFile(); OCRResult ocrResult = AICenter.execOCR(Operator.IDCard, file); dataWriter.addValue("ocr", ocrResult); } public void textAccurate() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); dataWriter.addValue("upload", fileRecord); //2. OCR识别 File file = fileRecord.getFile(); OCRResult ocrResult = AICenter.execOCR(Operator.TextAccurate, file); dataWriter.addValue("ocr", ocrResult); } public void textCommon() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); dataWriter.addValue("upload", fileRecord); //2. OCR识别 File file = fileRecord.getFile(); OCRResult ocrResult = AICenter.execOCR(Operator.TextCommon, file); dataWriter.addValue("ocr", ocrResult); } public void textFast() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); dataWriter.addValue("upload", fileRecord); //2. OCR识别 File file = fileRecord.getFile(); OCRResult ocrResult = AICenter.execOCR(Operator.TextFast, file); dataWriter.addValue("ocr", ocrResult); } public void invoiceIdentify2() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); dataWriter.addValue("upload", fileRecord); //2. OCR识别 File file = fileRecord.getFile(); OCRResult ocrResult = AICenter.execOCR(Operator.InvoiceIdentify, file); dataWriter.addValue("ocr", ocrResult); } public void invoiceVerification2() throws Exception { String fileId = null; //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); dataWriter.addValue("upload", fileRecord); fileId = fileRecord.getIndexId(); //2. OCR识别 File file = fileRecord.getFile(); OCRResult ocrResult = AICenter.execOCR(Operator.InvoiceIdentify, file); if ("fail".equalsIgnoreCase(ocrResult.getJson())) { dataWriter.addValue("ocr", ocrResult); return; } VatInvoiceVerifyLogic vatInvoiceVerifyLogic = new VatInvoiceVerifyLogic(); //3. 解析发票内容 VatInvoiceVerifyDao vatInvoiceVerify = vatInvoiceVerifyLogic.parseInvoiceInfo(ocrResult); if (Util.isEmpty(vatInvoiceVerify.getInvoiceCode()) && Util.isEmpty(vatInvoiceVerify.getInvoiceNo()) && Util.isEmpty(vatInvoiceVerify.getInvoiceDate()) && Util.isEmpty(vatInvoiceVerify.getAdditional()) && Util.isEmpty(vatInvoiceVerify.getAmount())) { ocrResult.setIs_bill(false); ocrResult.setJson(null); dataWriter.addValue("ocr", ocrResult); return; } //4.发票验真 ocrResult = AICenter.execOCR(Operator.InvoiceVerification, vatInvoiceVerify); if (!ocrResult.isIs_real()) { //将假发票删除 //vatInvoiceVerifyLogic.deleteBillImage(fileId); ocrResult.setIs_real(false); ocrResult.setIs_bill(true); dataWriter.addValue("ocr", ocrResult); return; } //5.将发票明细保存到表中 vatInvoiceVerifyLogic.saveVatInvoiceVerify(ocrResult); ocrResult.setIs_real(true); ocrResult.setJson(null); ocrResult.setIs_bill(true); //6.更新file_index是is_bill vatInvoiceVerifyLogic.markBill(fileId); dataWriter.addValue("ocr", ocrResult); } //银行回单识别 public void bankSlip() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); dataWriter.addValue("upload", fileRecord); //2. OCR识别 File file = fileRecord.getFile(); OCRResult ocrResult = AICenter.execOCR(Operator.BankSlip, file); dataWriter.addValue("ocr", ocrResult); } public void invoiceIdentify() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); File file = fileRecord.getFile(); dataWriter.addValue("upload", fileRecord); //2. OCR识别 OCRResult ocrResult = AICenter.execOCR(Operator.InvoiceIdentify, file); dataWriter.addValue("ocr", ocrResult); } public void getInvoiceIdentifyByCode() throws Exception { Object paramObject = null; //1. 收取参数 if(dataReader.getBody() != null ) { paramObject = JSONObject.parseObject(dataReader.getBody()); } //2. OCR识别 OCRResult ocrResult = AICenter.execOCR(Operator.GetInvoiceByCode, paramObject); dataWriter.addValue("ocr", ocrResult); } public void invoiceVerification() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); File file = fileRecord.getFile(); dataWriter.addValue("upload", fileRecord); //2. OCR识别 OCRResult ocrResult = AICenter.execOCR(Operator.InvoiceVerification, file); dataWriter.addValue("ocr", ocrResult); } public void invoiceIdentifyAndVerification() throws Exception { //1. 收取上载文件 FileRecord fileRecord = FileCenter.uploadOneFile(dataReader); File file = fileRecord.getFile(); dataWriter.addValue("upload", fileRecord); //2. OCR识别 OCRResult ocrResult = AICenter.execOCR(Operator.InvoiceIdentifyAndVerification, file); dataWriter.addValue("ocr", ocrResult); } }