腾讯云OCR(印刷体识别) API使用

使用背景:

业务部门下载了许多PDF的快递单 上面有联系方式 需要识别手机号码后保存下来

解决思路:

1、 如果是可编辑的pdf文档 可使用pdf 读取jar包来处理
2、 本需求的pdf是图片类型,无法编辑。所以只能把pdf转成image,然后使用ORC的图像识别来完成信息获取

腾讯云的OCR接入:

1、完善账号的实名等级,如果账号是企业的可以免费使用每月1000次的调用量
2、引入maven 依赖 查看demo案例

<dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java-ocr</artifactId><version>3.1.270</version>
</dependency>

将pdf文件转为image图片

public static String pdfToBase64(String pdfUrl){InputStream is = null;ByteArrayOutputStream os = null;String dUrlData="";byte[] buff = new byte[1024];int len = 0;try {is = new FileInputStream(new File(pdfUrl));os = new ByteArrayOutputStream();while ((len = is.read(buff)) != -1) {os.write(buff, 0, len);}os.flush();os.toByteArray();dUrlData = Base64.getEncoder().encodeToString(os.toByteArray());} catch (IOException e) {} finally {if (is != null) {try {is.close();} catch (IOException e) {}}if (os != null) {try {os.close();} catch (IOException e) {}}}return pdfToImg(dUrlData);}
public static String pdfToImg(String base64){String jpg_base64 = null;BASE64Decoder decoder = new BASE64Decoder();try {// Base64解码byte[] pdf_bytes = decoder.decodeBuffer(base64);PDDocument doc = PDDocument.load(pdf_bytes);int size = doc.getNumberOfPages();/*图像合并使用的参数*///定义宽度int width = 0;// 保存一张图片中的RGB数据int[] singleImgRGB;// 定义高度,后面用于叠加int shiftHeight = 0;//保存每张图片的像素值BufferedImage imageResult = null;// 利用PdfBox生成图像PDDocument pdDocument = doc;PDFRenderer renderer = new PDFRenderer(pdDocument);/*根据总页数, 按照50页生成一张长图片的逻辑, 进行拆分*/// 每50页转成1张图片int pageLength = size; //有多少转多少// 总计循环的次数int totalCount = pdDocument.getNumberOfPages() / pageLength + 1;for (int m = 0; m < totalCount; m++) {for (int i = 0; i < pageLength; i++) {int pageIndex = i + (m * pageLength);if (pageIndex == pdDocument.getNumberOfPages()) {break;}// 96为图片的dpi,dpi越大,则图片越清晰,图片越大,转换耗费的时间也越多BufferedImage image = renderer.renderImageWithDPI(pageIndex, 106, ImageType.RGB);int imageHeight = image.getHeight();int imageWidth = image.getWidth();if (i == 0) {//计算高度和偏移量//使用第一张图片宽度;width = imageWidth;// 保存每页图片的像素值// 加个判断:如果m次循环后所剩的图片总数小于pageLength,则图片高度按剩余的张数绘制,否则会出现长图片下面全是黑色的情况if ((pdDocument.getNumberOfPages() - m * pageLength) < pageLength) {imageResult = new BufferedImage(width, imageHeight * (pdDocument.getNumberOfPages() - m * pageLength), BufferedImage.TYPE_INT_RGB);} else {imageResult = new BufferedImage(width, imageHeight * pageLength, BufferedImage.TYPE_INT_RGB);}} else {// 将高度不断累加shiftHeight += imageHeight;}singleImgRGB = image.getRGB(0, 0, width, imageHeight, null, 0, width);imageResult.setRGB(0, shiftHeight, width, imageHeight, singleImgRGB, 0, width);}// 这个很重要,下面会有说明shiftHeight = 0;}pdDocument.close();ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流ImageIO.write(imageResult, "png", baos);//写入流中byte[] jpg_Bytes = baos.toByteArray();//转换成字节BASE64Encoder encoder = new BASE64Encoder();jpg_base64 = encoder.encodeBuffer(jpg_Bytes).trim();//转换成base64串jpg_base64 = jpg_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\nbaos.close();doc.close();} catch (Exception e) {e.printStackTrace();}return jpg_base64;}

3、完成pdf的读取

public static String ocrScanPdf(String pdfUrl) throws TencentCloudSDKException {Credential cred = new Credential("secretId", "secretkey");// 实例化一个http选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("ocr.tencentcloudapi.com");// 实例化一个client选项,可选的,没有特殊需求可以跳过ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的OcrClient client = new OcrClient(cred, "ap-shanghai", clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象GeneralBasicOCRRequest req = new GeneralBasicOCRRequest();String image = pdfToBase64(pdfUrl);req.setImageBase64(image);// 返回的resp是一个GeneralBasicOCRResponse的实例,与请求对象对应GeneralBasicOCRResponse resp = client.GeneralBasicOCR(req);// 输出json格式的字符串回包return GeneralBasicOCRResponse.toJsonString(resp);}

腾讯云OCR(印刷体识别) API使用相关推荐

  1. 调用腾讯云OCR接口识别身份证和户口本

    一.添加项目pom文件依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson ...

  2. SpringBoot项目H5界面手机拍照调用腾讯云OCR卡证识别接口完整例子

    最近一个微信端项目的功能涉及一个手机拍照上传身份证识别身份证信息回显的功能,调用的接口是腾讯云OCR的卡证识别功能.看了腾讯云的api通俗易懂,本地写好了demo测试可用.H5界面手机拍照调用后台方法 ...

  3. 前端直接跨域到腾讯云ocr文字识别(失败)

    前端直接跨域到腾讯云ocr文字识别 '/tx': {target: txUrl,// secure: false,changeOrigin: true, // 是否跨域// logLevel: 'de ...

  4. 腾讯云OCR文字识别的使用

    一 什么是OCR? OCR就是图片文字识别的技术,即将图片的文字信息智能提取出来属于人工智能的范畴.之前用过OCR图像文字识别来作用户身份证上传提取身份信息的功能和上传银行卡来获取银行卡信息的功能. ...

  5. 腾讯云身份证信息识别API

    接口文档:身份证识别 在使用之前需要先有自己的身份ID和密钥 在控制台上搜索文字识别->卡证文字识别->身份证识别然后开通自己的业务.在开通后点击右上方的接口文档,当然也可以看看计费方式, ...

  6. java的方式实现腾讯云ocr名片识别功能

    一.添加依赖 <dependency><groupId>com.squareup.okhttp</groupId><artifactId>okhttp& ...

  7. springboot 集成 腾讯云ocr身份证识别

    //控制层 @GetMapping("/getCertification")@ApiOperation(value = "ocr身份证识别接口 positiveImg:正 ...

  8. 阿里云 OCR身份证识别Api 使用(一)

    最近项目更新使用拍照识别身份证功能,为了省去用户手动输入身份证号码信息等. 从网上搜了一些方案,发现阿里云的非常便宜,果断采用. 但是没有android 的官方案例 ,只能自己搞了. 首选OCR 识别 ...

  9. C#接入腾讯云OCR照片识别的软件更新

    原有版本:https://blog.csdn.net/qq_27180763/article/details/83863144 现有版本: 1.增加了多张图片同时上传功能 2.增加日志系统 3.增加了 ...

  10. 阿里云OCR图片识别

    阿里云OCR图片识别 请求参数(Body) 请求示例(java) 正常返回示例 错误码定义 阿里云OCR图片识别: 单字识别,表格识别,旋转功能 准备条件:阿里云OCR图片识别API购买,初次购买1分 ...

最新文章

  1. ASP.NET Core 中文文档 第二章 指南(4.4)添加 Model
  2. linux shell 算术运算{expr、bc、dc、(( ))和[ ]}
  3. Redis中的数据迁移
  4. hbase集群安装和shell操作
  5. linux 使用nginx 权限不够,对于nginx和Linux,有一些关于权限的问题。
  6. 拒绝枯燥,有意思的 Loading 页面动效设计
  7. 站内搜索引擎初探:haystack全文检索,whoosh搜索引擎,jieba中文分词
  8. 通过JAVA操作SAE上的MY SQL数据库
  9. repo start master --all 和repo start --all master区别
  10. 谈谈Pod在微服务中的运用
  11. Oracle+PL+SQL从入门到精通.丁士锋.清华大学出版社.2012
  12. 怎么升级计算机的操作系统,电脑如何升级系统版本_Windows10/7电脑升级系统版本的操作步骤...
  13. 计算机网络第三章:数据链路层
  14. 云更新网吧系统服务器,云更新网吧无盘
  15. gae代码_GAE中的Java EE
  16. windows linux 共存,Windows与Linux共存
  17. 手机微信广告页html代码,微信公众号h5网页被嵌入广告 不知道什么原因
  18. 朋友千千万,知己有几人。转些短句。
  19. Java 阿里云实人认证
  20. flux读取不到数据_WebFlux 中form data获取不到参数问题

热门文章

  1. python爬虫 煎蛋网妹子图 动态爬虫1
  2. 趣图:万一跑路失败被抓,可以这样解释
  3. 数据库主键、外键和唯一键的区别
  4. 电子专业 html,25款专业的 WordPress 电子商务网站主题_html/css_WEB-ITnose
  5. 计算机辅助设计在环境工程中的应用,原创:试论计算机辅助设计在环境工程中的应用原稿...
  6. 阿觿学长带领准大学生们一起走进互联网
  7. java-net-php-python-jspm早教中心系统查重PPT计算机毕业设计程序
  8. Exchange ActiveSync 配置
  9. java程序设计案例_Java程序设计案例教程
  10. matlab 离散阶跃函数,matlab阶跃函数