pdf中二维码识别的优化方案

​ 博主平常所接触的业务基本都是围绕着各种财票,税票;要知道财税票的查验都需要票据的五要素,而二维码是我们能通过代码直接获取到票据五要素最直接的通道;加上国家推进票据的电子化,未来涉及到电子票据相关业务必然会有通过二维码识别要素信息的场景;废话不多说了,直接上代码。

  1. 首先需要引入解析pdf必要的maven依赖

    <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.19</version>
    </dependency>
    
  2. 通常我们都是把pdf转为图片然后整张去读取二维码,由于图片面积问题偶尔会造成二维码识别失败问题;要知道二维码在pdf文件中就是一张图片,所以我们把pdf中的图片取出来去识别就行了

private static String[] getByQRCodeTryHarder(byte[] bytes) throws IOException {log.info("bytes.length:{}",bytes.length);//读取pdf中的图片// 设置编码字符集HashMap<DecodeHintType, Object> hints = new HashMap<>();hints.put(DecodeHintType.CHARACTER_SET, "utf-8");hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);hints.put(DecodeHintType.PURE_BARCODE, Boolean.TRUE);List<BufferedImage> imageList = new ArrayList<>();PDDocument document = null;document = PDDocument.load(bytes);//取第一页pdfPDPage page = document.getPage(0);PDResources resources = page.getResources();//解析获取pdf中的图片for (COSName name : resources.getXObjectNames()){if (resources.isImageXObject(name)) {PDImageXObject obj = (PDImageXObject) resources.getXObject(name);imageList.add(obj.getImage());}}//遍历解析处理图片集合MultiFormatReader reader = new MultiFormatReader();for (int i = 0; i < imageList.size(); i++) {BufferedImage image = imageList.get(i);Result result = null;try {result =reader.decode(new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image))), hints);}catch (NotFoundException e) {//报此异常表示不是二维码或未识别到,识别下一张e.printStackTrace();}if (null != result && !StringUtils.isEmpty(result.getText())) {System.out.println(Arrays.toString(result.getText().split(",")));return result.getText().split(",");}}return null;
}

pdf中二维码识别的一种优化方案相关推荐

  1. 网页中二维码识别规则

    识别规则 这里采用的逻辑是截屏识别,当客户端发现用户在网页的img标签内进行长按操作时,会立刻截屏并且启动二维码识别算法.所以这里用于二维码识别的图片是截屏,而不是之前有人提到的img标签中的图片. ...

  2. 仿商城商品生成分享海报图片和识别图中二维码并跳转商品详情页

    购物商城里面的商品分享给朋友的时候会生成一张海报图片,图片上附带这二维码图片,朋友拿到这张图片扫描上面的二维码就可以进入商品详情页查看此商品了.今天来做一下这种功能,先生成商品海报图片,然后长按这张图 ...

  3. 微信小程序生成海报中二维码-----长按识别不了问题及处理方案

    > 问题描述: 小程序某个页面中点击按钮,想要生成带有二维码的图片,后续保存本地.生成图片后转发微信中,后长按图片不会出现识别图中二维码的选项问题. 一年前写过一个分享页,当时大部分可以识别,只 ...

  4. [软件工具][windows]pdf二维码条形码识别重命名工具使用教程

    pdf二维码条形码识别重命名工具是一款专门用于识别pdf中的二维码或者条形码并将识别结果变成pdf名字,是目前全球首款用于识别pdf条码的软件,具有识别精度高.识别速度快等特点.接下来介绍这个软件使用 ...

  5. 微信小程序长按图片,实现保存、转发、识别图中二维码

    在小程序image组件中二维码/小程序码图片不支持长按识别,仅在 wx.previewImage 中支持长按识别 但是通过wx.previewImage只能实现保存,转发,小程序 只能识别 小程序二维 ...

  6. 点击复制以及长按识别图中二维码功能

    功能介绍:1.点击复制按钮,复制指定内容:2.借助微信浏览器识别图中二维码.效果如图: 功能介绍 点击复制功能 前提:引入clipboard.js html <div class="g ...

  7. python二维码识别读取_python+opencv检测图片中二维码

    缘起 需要检测发票中二维码的位置,以确定图像该怎么旋转,同时也可以为提取二维码信息创造先觉条件!(万恶的需求!) 失败的尝试--opencv训练大法 不感兴趣的可跳过不看! 解释:原文作者是训练检测舌 ...

  8. JAVA 识别图片中二维码 opencv 识别精准

    JAVA 识别图片中二维码 opencv 识别精准 文章目录 JAVA 识别图片中二维码 opencv 识别精准 一.添加依赖 二.依赖配置 三.测试类 四.结果 提示:以下是本篇文章正文内容,下面案 ...

  9. Vue实现长按图片识别图中二维码

    Vue实现长按图片识别图中二维码 思路:要想实现可以识别图片中的二维码,那必定是要将这张图进行上传操作,上传则需要file对象格式.不管是在H5还是APP中,展示的图片都是通过url的方式展示在img ...

最新文章

  1. Ubuntu 14.04 64bit上查看网页中的cookies
  2. html js json数据解析后台数据包_如何将html解析为有关联的json数据?htmlparser2模块使用详解...
  3. cogs 610. 数对的个数
  4. matlab模糊规则ruleList的解释
  5. 大数据WEB阶段 Js常用的页面操作
  6. leetcode面试题 10.05. 稀疏数组搜索(二分法)
  7. 大数据_Flink_数据处理_流处理API_Source_自定义测试数据源---Flink工作笔记0028
  8. POJ 3133 Manhattan Wiring(插头DP)
  9. redis的5种数据结构和基本操作
  10. php 工厂模式作用,PHP工厂模式的好处概述
  11. python3语法学习第四天--字符串
  12. 给Emacs安装一个脚踏板: 用Windows/Menu键作为key modifier
  13. python实现多进程监听声音播放并绘图
  14. 树莓派ubuntu mate 修改屏幕解析度为800x480
  15. 网站性能优化之DNS Prefetch
  16. 数字化时代,如何做好用户体验与应用性能管理
  17. Redis6.3版本Redis.config 解读(重要的)
  18. canvas mdn_MDN文档 canvas教程笔记
  19. 【面试】Tomcat面试题
  20. Bat(批处理)文件编写手册(一)

热门文章

  1. VSTO,COM加载项勾选后不显示,始终处于未加载状态
  2. OpenWrt——修改软件源
  3. Android onFinishInflate 的理解
  4. 查询S2学员考试成绩信息
  5. 银行从业考试如何备考?
  6. 移动端或小程序布局之min-hight
  7. 【Ardiuno】Ardiuno+MPU6050读取原始加速度并显示
  8. 基于HT For Web 打造可视化海绵城市,搏动“城市之肾“!
  9. 根据出生年份判断生肖
  10. 电影先生Mxone6.61魔改版苹果cms模板