三木猿 发表于 2022-6-15 15:33

java对接华为图片识别OCR服务

本帖最后由 三木猿 于 2022-6-17 10:02 编辑

已同步更新个人博客:http://www.sanmu.xyz/blog/6
OCR:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。
=======================================================以上来自百度========================================================================

[*]前言:
简单来说OCR就是图片识别技术,我把图片传到OCR供应商,然后提供商返回图片中的所有文字。
[*]供应商:
       为什么要选择供应商,不能自己写OCR吗?
       当然可以,但是最好不要,实际上java是有OCR的工具包的,也就是开源OCR,使用它需要在电脑安装OCR软件,项目中也需要导包,不方便的同时,用开源OCR解析出来的文字
可能并不准确,并且数据会很乱,一般解析出来的json就是某一串文字和这串文字对应的以像素为单位的坐标。这种数据处理起来也比较麻烦,并且解析的图片也只能是指定大小、
指定样式的,想要数据解析准确就必须能够准确找到想要的数据,用自己写的OCR就很难做到了。如果需要解析的图片有固定的样式,图片大小也确定为固定像素,那你完全可以试试
这种手撸代码的方式。
       怎么选择供应商?
       这个要看自己的业务需求了,比如你需要解析的是营业执照,那你必须找到一个支持营业执照解析的OCR供应商,OCR识别功能其实也是属于人工智能的一种,而人工智能国内顶尖的
也就那几个公司,什么某里云,腾某云、某度云、某为云啥的,我这里主要说下某为云。,其实各家的使用方式都是大同小异的。
       有没有各家供应商的收费标准?
      你算是赚到了,我刚好有这玩意,我这只有部分的,其他的就要你们自己去找了


    3. 主体,华为云使用

[*]文字识别sdk地址 https://support.huaweicloud.com/sdkreference-ocr/ocr_04_0016.html
[*]在线测试地址 https://apiexplorer.developer.hu ... cognizeGeneralTable
[*]sdk maven地址


[*]<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-ocr</artifactId>
<version>3.0.92</version>
</dependency>
[*]华为云其实能自动生成代码的,就在API Explorer(在线测试地址)

[*]

       3.1华为云代码解析
         package com.huaweicloud.sdk.test;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.ocr.v1.region.OcrRegion;
import com.huaweicloud.sdk.ocr.v1.*;
import com.huaweicloud.sdk.ocr.v1.model.*;


public class RecognizeGeneralTableSolution {

    public static void main(String[] args) {
      String ak = "<YOUR AK>";//这个是身份校验需要的ak,sk,相当于用户名密码
      String sk = "<YOUR SK>";

      ICredential auth = new BasicCredentials()
                .withAk(ak)
                .withSk(sk);

      OcrClient client = OcrClient.newBuilder()
                .withCredential(auth)
                .withRegion(OcrRegion.valueOf("cn-east-3"))//地区
                .build();
      RecognizeGeneralTableRequest request = new RecognizeGeneralTableRequest();
      try {
            RecognizeGeneralTableResponse response = client.recognizeGeneralTable(request);
            System.out.println(response.toString());
      } catch (ConnectionException e) {
            e.printStackTrace();
      } catch (RequestTimeoutException e) {
            e.printStackTrace();
      } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
      }
    }
}
ak,sk获取方式
地址:https://console.huaweicloud.com/ ... h-4#/mine/accessKey

地区获取方式

三木猿 发表于 2023-1-6 11:40

Naylor 发表于 2023-1-5 09:23
核心代码是获做了认证,没有看到ocr识别相关的代码呀?

其中这一段代码都是OCR识别相关的,不同的OCR更换不同的实现类名就行,因为是自动生成的代码,所以可以直接到华为在线调试里面生成
OcrClient client = OcrClient.newBuilder()
                .withCredential(auth)
                .withRegion(OcrRegion.valueOf("cn-east-3"))//地区
                .build();
      RecognizeGeneralTableRequest request = new RecognizeGeneralTableRequest();
      try {
            RecognizeGeneralTableResponse response = client.recognizeGeneralTable(request);
            System.out.println(response.toString());
      } catch (ConnectionException e) {
            e.printStackTrace();
      } catch (RequestTimeoutException e) {
            e.printStackTrace();
      } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
      }

大头鱼110 发表于 2023-8-29 21:28

椭圆:
2 2
2 2 1
4 3
x y
c c
  ,
2
0,
2
C c
 
 
 
,设 M (x, y),
2
2
2 2 2 1 2 9 7 2 6 2
2
2 3 2 2
c
MC x y c y cy c
  
         
 

6 1
2
MC   c,
max
2 3 2
4
MC
AB
  
  
  ,选 D

三木猿 发表于 2022-6-17 10:06

顺带一提,QQ的文字提取就是OCR技术,很多小众文字提取软件大多用的开源OCR,毕竟别人的要钱

nissansz 发表于 2022-6-17 16:53

三木猿 发表于 2022-6-18 09:21

nissansz 发表于 2022-6-17 16:53
pytorch, paddle自己训练,可以准确度高

用OCR识别营业执照这种,主要问题在于,营业执照有很多种模板,不去维护这些模板识别就总会有偏差,如果维护模板就很麻烦的,所以用别人的OCR就省了很多事

woshinage 发表于 2022-7-7 16:47

还是花钱的好

lilinas844 发表于 2022-7-7 16:48

赞一个,谢谢

toto123 发表于 2022-7-7 19:31

谢谢,赞一个

haibin163 发表于 2022-7-8 08:39

        用心讨论,共获提升!

zhouzhoufuck 发表于 2023-1-4 16:05

用心讨论,共获提升

Naylor 发表于 2023-1-5 09:23

核心代码是获做了认证,没有看到ocr识别相关的代码呀?
页: [1] 2
查看完整版本: java对接华为图片识别OCR服务