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);
|
|
|
}
|
|
}
|