软件构造实验作业

实验名称:基于百度文字识别SDK开发自助车牌识别系统      

 

一、实验任务

任务一:配置百度文字识别Java SDK(占10%)

任务二:了解百度文字识别相关功能并进行总结(占20%)

任务三:基于Java Swing+AWT完成身份证识别应用界面,自行拍摄身份证图片进行上传并查看结果(占30%)

任务四:基于Java Swing+AWT完成车牌识别应用界面,自行拍车牌图片进行上传并查看结果(占30%)

实验总结:(占10%)

任务一:

首先在idea中创建一个maven项目,设置好目录等如下图

 

添加依赖并刷新:(版本号可在Maven Central Repository Search查看)

 

此时我们所需要的jar包已经通过maven导入项目中了,如下:

 

此时百度图像识别Java SDK已配置完成。

任务二:

首先进入控制台登录,找到文字识别并进入。然后在卡证里选身份证、交通里选车牌识别并领取,领完后如下图

 

因为这是新的接口,所以我们要重新需要申请自己的App IDApi KeySecrect Key进入控制台并登录然后在菜单栏点击文字识别找到应用列表,然后进行创建如图:

 

 

点击创建应用,完善相关信息,创建完成后可看到相关信息,如下图:

 

百度文字识别包括以下九个大的方面(通用场景文字识别、卡证文字识别、交通场景文字识别、财务票据文字识别、医疗票据文字识别、防疫场景文字识别、教育场景文字识别、其他场景文字识别、文档图像处理)每个大方面又包含若干小的方面。比如我们今天使用的卡证文字识别里面的身份证识别其支持对二代居民身份证正反面所有8个字段进行结构化识别,包括姓名、性别、民族、出生日期、住址、身份证号、签发机关、有效期限,识别准确率超过99%;同时支持身份证正面头像检测,并返回头像切片的base64编码及位置信息。

同时,支持对用户上传的身份证图片进行图像质量和风险检测,是否存在正反颠倒、模糊、欠曝、过曝等质量问题,可识别图片是否为复印件或临时身份证,是否被翻拍或编辑,是否存在四角不完整、头像或关键字段被遮挡;通场景文字识别中的车牌识别其支持识别中国大陆机动车蓝牌、黄牌(单双行)、绿牌、大型新能源(黄绿)、领使馆车牌、警牌、武警牌(单双行)、军牌(单双行)、港澳出入境车牌、农用车牌、民航车牌的地域编号和车牌号,并能同时识别图像中的多张车牌等强大的功能。

不仅如此百度的文字识别,覆盖多种通用场景、多种语言的高精度整图文字检测和识别服务,包括各类印刷和手写文档、网络图片、表格、数字、二维码等;可用于纸质文档电子化、办公文档/报表识别、图像内容审核、快递面单识别等。不仅准确率高,针对图片模糊、倾斜、翻转等情况进行专项优化,鲁棒性强,多项ICDAR指标居世界第一,总体识别准确率高达99%。而且,服务稳定,依托百度云技术实力,提供高可靠性、弹性可伸缩、高并发承载的云端服务,服务可用性高达99.99%,同时支持多语种识别,通用文字识别支持对中、英、法、俄、西、葡、德、意、日、韩等20个语种的识别,并支持中、英、日、韩4个语种的类型检测。并且,证的文字识别,可以识别身份证、银行卡、营业执照、护照、户口本等常用卡片及证照的文字内容;还可使用 EasyDL OCR 自训练平台,定制个性化识别模型,结构化输出关键字段内容。广泛适用于身份认证、金融开户、征信评估、商户入驻等业务场景,提供稳定易用的云端服务、离线SDK、软件部署包多种服务形式。

任务三:

创建类然后根据给出的样例编写自己的代码(记得把APP_IDAPI_KEYSECRET_KEY都换成自己的,将创建应用后生成的东西按名称填入对应位置)

 

然后在HTTP-SDK文档中找到对应语言和所需要的接口,如下图:

 

然后将该接口,用到实例代码的对应接口调用的位置,修改代码后如下:

package cn.com.yjw;

import com.baidu.aip.imageclassify.AipImageClassify;

import com.baidu.aip.ocr.AipOcr;

import org.json.JSONObject;

import java.util.HashMap;

public class Identity {

    public static final String APP_ID = "28196188";

    public static final String API_KEY = "kFGM0T7tPeQ4qMxm8xaNGAV9";

    public static final String SECRET_KEY = "nVwfHXneGTv3idrNfV7kbcFufgaqQECQ";

    public static void main(String[] args) {

        // 初始化一个AipOcr

        AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);

        // 调用接口

        Identity.identity(client);

    };

    public static void identity(AipOcr client) {

        // 传入可选参数调用接口

        HashMap<String, String> options = new HashMap<String, String>();

        options.put("detect_direction", "true");

        options.put("detect_risk", "false");

        String idCardSide = "back";

        // 参数为本地图片路径

        String image = "test.jpg";

        JSONObject res = client.idcard(image, idCardSide, options);

        System.out.println(res.toString(2));

    }

}

 

在项目中建立一个img包用来存放需要识别的图像,然后从网上下载照片改名后进行调试

这一块代码一定要改。

做好界面以后结果如下:

 

 

任务四:

创建类然后根据给出的样例编写自己的代码(记得把APP_IDAPI_KEYSECRET_KEY都换成自己的,将创建应用后生成的东西按名称填入对应位置)

 

然后在HTTP-SDK文档中找到对应语言和所需要的接口,如下图:

 

然后将该接口,用到实例代码的对应接口调用的位置,修改代码后如下:

package cn.com.yjw;

import com.baidu.aip.imageclassify.AipImageClassify;

import com.baidu.aip.ocr.AipOcr;

import org.json.JSONObject;

import java.util.HashMap;

public class Car {//设置APPID/AK/SK

    public static final String APP_ID = "28204494";

    public static final String API_KEY = "e8aS3lAjnwDDTyYANsmlQbUq";

    public static final String SECRET_KEY = "uBGjNkZ3qstXhSRUmfHGfWqXMgt2Ge9O";

    private static AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);

    public static void main(String[] args) {

        // 初始化一个AipOcr

        AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);

        // 调用接口

        Car.sample(client);

    };

    public static void sample(AipOcr client) {

        // 传入可选参数调用接口

        HashMap<String, String> options = new HashMap<String, String>();

        options.put("multi_detect", "true");

        // 参数为本地图片路径

        String image = "D:\\Code\\Java\\IDEA\\SCTutorial02\\img\\car.jpg";

        JSONObject res = client.plateLicense(image, options);

        System.out.println(res.toString(2));

    }

}

 

然后从网上下载照片改名后放入img包下进行调试

在身份证和车牌识别都可以运行以后开始进行界面的设计(在上一次的基础上进行修改)

身份证识别在之前的基础上添加一个按钮和监听器就可以实现了。结果展示如下:

 

posted on 2022-11-02 20:09  辰逸1  阅读(27)  评论(0编辑  收藏  举报