JAVA演示阿里云图像识别API,印刷文字识别-营业执照识别

JAVA演示阿里云图像识别API,印刷文字识别-营业执照识别

一、前言

本文主要介绍如何使用JAVA调用阿里云图像识别API,实现营业执照识别的功能。本文将从以下几个方面进行讲解:

  1. 阿里云图像识别API简介
  2. 调用步骤
  3. 示例说明

二、阿里云图像识别API简介

阿里云图像识别API是一项基于深度学习技术、对图像进行智能分析与识别的服务。针对营业执照识别,我们可以使用阿里云图像识别API中印刷文字识别的功能。

三、调用步骤

  1. 首先需要在阿里云市场上购买阿里云图像识别API,并获取到AccessKey和SecretKey。

  2. 在JAVA中,我们可以使用阿里云提供的Java SDK进行API的调用。可以通过Maven进行依赖的导入:

xml
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-ocr</artifactId>
<version>1.0.0</version>
</dependency>

  1. AccessToken的获取

首先,我们需要通过AccessKey和SecretKey获取AccessToken。代码示例如下:

java
IClientProfile profile = DefaultProfile.getProfile("cn-beijing", "accessKeyId", "accessSecret");
IAcsClient client = new DefaultAcsClient(profile);
OcrRequest req = new OcrRequest();
req.setMethod(MethodType.POST);
req.setAcceptFormat(FormatType.JSON);
req.setVersion("2019-12-30");
req.setActionName("GetAccessToken");
OcrResponse response = client.getAcsResponse(req);
System.out.println(response.getBody());

上述代码调用了GetAccessToken接口,获取到了AccessToken。

  1. 图片识别

接下来,我们需要上传图片进行识别。代码示例如下:

java
IClientProfile profile = DefaultProfile.getProfile("cn-beijing", "accessKeyId", "accessSecret");
IAcsClient client = new DefaultAcsClient(profile);
OcrRequest req = new OcrRequest();
req.setMethod(MethodType.POST);
req.setAcceptFormat(FormatType.JSON);
req.setVersion("2019-12-30");
req.setActionName("RecognizeBusinessLicense");
req.putQueryParameter("ImageUrl", "https://xxx.jpg");
OcrResponse response = client.getAcsResponse(req);
System.out.println(response.getBody());

上述代码调用了RecognizeBusinessLicense接口,上传图片进行识别,并返回结果。

四、示例说明

示例一

假设我们有一张名为“license.jpg”的营业执照图片,我们需要识别图片中的信息。代码示例如下:

public static void main(String[] args) {
    // 获取AccessToken
    String accessToken = getAccessToken();
    // 上传图片进行识别
    String result = recognize(accessToken, "https://xxx/license.jpg");
    System.out.println(result);
}

public static String getAccessToken() {
    IClientProfile profile = DefaultProfile.getProfile("cn-beijing", "accessKeyId", "accessSecret");
    IAcsClient client = new DefaultAcsClient(profile);
    OcrRequest req = new OcrRequest();
    req.setMethod(MethodType.POST);
    req.setAcceptFormat(FormatType.JSON);
    req.setVersion("2019-12-30");
    req.setActionName("GetAccessToken");
    OcrResponse response = client.getAcsResponse(req);
    return response.getBody().trim();
}

public static String recognize(String accessToken, String imageUrl) {
    IClientProfile profile = DefaultProfile.getProfile("cn-beijing", "accessKeyId", "accessSecret");
    IAcsClient client = new DefaultAcsClient(profile);
    OcrRequest req = new OcrRequest();
    req.setMethod(MethodType.POST);
    req.setAcceptFormat(FormatType.JSON);
    req.setVersion("2019-12-30");
    req.setActionName("RecognizeBusinessLicense");
    req.putQueryParameter("ImageUrl", imageUrl);
    req.putQueryParameter("AccessToken", accessToken);
    String result = null;
    try {
        OcrResponse response = client.getAcsResponse(req);
        result = response.getBody();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

示例二

假设我们有多张图片需要识别,我们可以使用线程池,同时识别多张图片。代码示例如下:

public static void main(String[] args) {
    // 获取AccessToken
    String accessToken = getAccessToken();
    // 图片地址列表
    List<String> imageUrlList = Arrays.asList(
            "https://xxx/license1.jpg",
            "https://xxx/license2.jpg",
            "https://xxx/license3.jpg");
    // 创建线程池,同时识别多张图片
    ExecutorService executorService = Executors.newFixedThreadPool(imageUrlList.size());
    List<Future<String>> resultList = new ArrayList<>();
    for (String imageUrl : imageUrlList) {
        Future<String> result = executorService.submit(() -> recognize(accessToken, imageUrl));
        resultList.add(result);
    }
    // 获取识别结果
    for (Future<String> result : resultList) {
        try {
            System.out.println(result.get());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    executorService.shutdown();
}

public static String getAccessToken() {
    IClientProfile profile = DefaultProfile.getProfile("cn-beijing", "accessKeyId", "accessSecret");
    IAcsClient client = new DefaultAcsClient(profile);
    OcrRequest req = new OcrRequest();
    req.setMethod(MethodType.POST);
    req.setAcceptFormat(FormatType.JSON);
    req.setVersion("2019-12-30");
    req.setActionName("GetAccessToken");
    OcrResponse response = client.getAcsResponse(req);
    return response.getBody().trim();
}

public static String recognize(String accessToken, String imageUrl) {
    IClientProfile profile = DefaultProfile.getProfile("cn-beijing", "accessKeyId", "accessSecret");
    IAcsClient client = new DefaultAcsClient(profile);
    OcrRequest req = new OcrRequest();
    req.setMethod(MethodType.POST);
    req.setAcceptFormat(FormatType.JSON);
    req.setVersion("2019-12-30");
    req.setActionName("RecognizeBusinessLicense");
    req.putQueryParameter("ImageUrl", imageUrl);
    req.putQueryParameter("AccessToken", accessToken);
    String result = null;
    try {
        OcrResponse response = client.getAcsResponse(req);
        result = response.getBody();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

五、总结

通过本文的介绍,我们了解了JAVA调用阿里云图像识别API,实现营业执照识别的方法。同时,我们可以通过线程池的方式,提高识别的效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA演示阿里云图像识别API,印刷文字识别-营业执照识别 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • opencv中图像叠加/图像融合/按位操作的实现

    下面是关于OpenCV中图像叠加/图像融合/按位操作的实现的完整攻略。 1. 图像叠加/图像融合 图像叠加/图像融合是将两幅图像进行合并的过程,可以将一幅图像的一部分插入到另一幅图像中,也可以将两幅图像重叠在一起。 1.1. 图像叠加 图像叠加是将两幅图像重叠在一起,并且使得叠加后的图像更加透明或者更加亮度。 代码示例: import cv2 # 加载图像 …

    人工智能概论 2023年5月25日
    00
  • vivo X Note值得入手吗 vivo X Note体验评测

    vivo X Note值得入手吗 – vivo X Note体验评测 介绍 vivo X Note是vivo推出的一款中高端手机。以下是对该手机的详细评测分析,希望能够帮到想要购买该手机的用户。 外观 vivo X Note采用了前后双玻璃+金属中框的设计,整体感觉非常高端。屏幕正面采用了2.5D曲面玻璃,机身背面也有着类似的设计。该机整体颜色采用亮黑色,非…

    人工智能概览 2023年5月25日
    00
  • Lua 操作 MongoDB 数据库实例

    Lua 操作 MongoDB 数据库实例需要安装 luamongo 模块和 MongoDB 数据库驱动,下面是具体的操作步骤: 安装 luamongo 模块 根据你的操作系统类型,在 LuaRocks 官网上下载相应的 binary 或源码,例如下载 luamongo-0.5.6-1.rockspec 在终端中进入下载的目录,运行 luarocks inst…

    人工智能概论 2023年5月25日
    00
  • 为了防老板窥屏 小编总结一些防窥屏套路

    为了防老板窥屏 小编总结一些防窥屏套路 为了防止在公共场合或者公司中使用电脑时被别人窥屏,小编总结了一些防窥屏的套路,希望能帮到大家。 1. 调整屏幕亮度和角度 将屏幕的亮度调低可以有效地减少别人窥屏的概率。同时,调整屏幕的角度,使得他人无法直接看到显示屏,也是一个不错的方法。 2. 使用隐私屏幕保护膜 隐私屏幕保护膜可以有效地防止旁人通过侧面角度窥屏。这种…

    人工智能概览 2023年5月25日
    00
  • tensorflow转换ckpt为savermodel模型的实现

    TensorFlow是一个强大的深度学习框架,其中包含了许多常用的工具和功能,其中转换 ckpt 文件为 saver 模型就是一个很常见的需求,下面是这个过程的完整攻略。 步骤一:加载 ckpt 模型文件 要加载 ckpt 模型文件,你需要在代码中初始化 Graph 和 Session。可以使用 tf.train.import_meta_graph() 函数…

    人工智能概览 2023年5月25日
    00
  • 2款Python内存检测工具介绍和使用方法

    2款Python内存检测工具介绍和使用方法 什么是Python内存检测工具 Python内存检测工具是一种用于检测Python程序中的内存泄漏和内存使用状况的工具。Python程序运行时会分配一定的内存空间,随着程序的运行,内存分配和回收的操作也会变得越来越复杂。Python内存检测工具可以帮助开发人员快速定位内存泄漏和内存使用状况,提高程序的性能和稳定性。…

    人工智能概览 2023年5月25日
    00
  • Docker+Nginx打包部署前后端分离步骤实现

    下面是“Docker+Nginx打包部署前后端分离步骤实现”的完整攻略。 1. 准备工作 在开始部署前,需要先准备好以下工作: 前端项目代码:使用Vue、React、Angular等框架开发的前端项目代码。 后端项目代码:使用Node.js、Spring等框架开发的后端项目代码。 Docker环境:需要安装好Docker,并掌握基本的Docker使用方法。 …

    人工智能概览 2023年5月25日
    00
  • Python脚本调试工具安装过程

    下面是Python脚本调试工具安装过程的完整攻略。 安装过程 步骤1:安装Python 首先需要安装Python,可以在Python官网下载安装包进行安装,或使用系统自带的Python环境。 步骤2:安装调试工具 常用的Python脚本调试工具有pdb、ipdb、pudb等。具体安装方法如下: 使用pip安装pdb 如果已经安装了Python,可以使用pip…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部