pdf转图片,nodejs图片切割、opencv处理图片灰度,批量扫描二维码

前端开发者通过Node.js处理PDF,识别并保存二维码,遇到模糊二维码时用Python优化图像

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

需求:公司做会员卡实体卡的项目,需要扫码绑定用户,制卡商给了一个pdf文件里面包含2000张会员卡要求确认印刷,需要扫描出二维码内容并确定


问题描述

这个任务被安排到我身上(本人前端),领导让手动扫码,作为一个程序员怎么可能干这么蠢的事呢,想着写个脚本解决一下,以下为解决步骤:

1. 首先要把pdf的每一页分开

有一个很方便的网站 iLovePDF | Online PDF tools for PDF lovers可以在线把pdf转为图片

2. 把每个卡分成一个图片文件

这里我用node写了个脚本把图片平均分为五行五列,就实现了每个图片上有一个二维码

const fs=require('fs');
const sharp=require('sharp');


const filesArr=fs.readdirSync('./ilovepdf_pages-to-jpg');



for (let i=0; i<filesArr.length; i++) {
   
  const fileName=filesArr[i];
  const inputImagePath='./ilovepdf_pages-to-jpg/'+fileName;
  // 设置输入图片路径和输出文件夹路径
  const outputFolderPath='./output_images';
  // 读取输入图片数据
  const imageBuffer=fs.readFileSync(inputImagePath);
  // 创建输出文件夹
  if (!fs.existsSync(outputFolderPath)) {
   
    fs.mkdirSync(outputFolderPath);
  }

  // 设置分割参数
  const numRows=5; // 分割行数
  const numCols=5; // 分割列数
  const imgHandle=async () => {
   

    const imageInfo=await sharp(imageBuffer).metadata();

    const imageHeight=imageInfo.height;
    const imageWidth=imageInfo.width;
    const blockWidth=Math.floor(imageWidth/numCols);
    const blockHeight=Math.floor(imageHeight/numRows);
    // 分割图片
    for (let row=0; row<numRows; row++) {
   
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值