当前位置: 首页 > news >正文

图片PDF区域信息批量提取至Excel,基于QT和阿里云api的实现方案

办公文档处理:在企业日常办公中,经常会遇到大量的扫描文档(如发票、合同、报表等)以图片或 PDF 格式存储。需要将这些文档中的特定区域信息(如发票金额、合同条款、报表数据等)提取出来,整理到 Excel 表格中,以便进行数据分析、统计和进一步处理。

数据采集与整理:对于从事数据采集工作的人员,从各种图片和 PDF 资料中提取特定区域的信息,并汇总到 Excel,能够快速整合数据,为后续的数据挖掘和分析提供基础。

详细代码步骤

  1. 创建 QT 项目并配置环境
    • 打开 QT Creator,创建一个新的 Qt Widgets Application 项目。
    • 在项目的.pro文件中添加以下内容:
QT += network
LIBS += -L/path/to/libxlsxwriter -lxlsxwriter
  • 请将/path/to/libxlsxwriter替换为实际的libxlsxwriter库路径。
  1. 读取图片和 PDF 文件
    • 对于图片,使用QPixmap类读取。
    • 对于 PDF 文件,使用 Poppler 库(需要先安装 Poppler 库并在项目中配置好)。以下是读取 PDF 并将其转换为图片的示例代码:
#include <Poppler/Document.h>
#include <QPixmap>
#include <QFile>QPixmap pdfPageToPixmap(const QString& pdfFilePath, int pageNumber) {Poppler::Document* doc = Poppler::Document::load(pdfFilePath);if (!doc || doc->isLocked()) {delete doc;return QPixmap();}doc->setRenderHint(Poppler::Document::Antialiasing);doc->setRenderHint(Poppler::Document::TextAntialiasing);QPixmap pixmap = doc->page(pageNumber)->renderToPixmap(300, 300);delete doc;return pixmap;
}
  1. 调用阿里云 API 进行文字识别
    • 首先,需要构建 HTTP 请求并发送。以下是使用QNetworkAccessManager发送 POST 请求的示例代码,假设使用阿里云通用文字识别 API:
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrlQuery>
#include <QJsonObject>
#include <QJsonDocument>
#include <QFile>
#include <QBuffer>
#include <QCryptographicHash>
#include <QDateTime>QString getBase64FromPixmap(const QPixmap& pixmap) {QByteArray byteArray;QBuffer buffer(&byteArray);pixmap.save(&buffer, "PNG");return byteArray.toBase64();
}void sendOcrRequest(const QPixmap& pixmap, const QString& accessKeyId, const QString& accessKeySecret) {QNetworkAccessManager* manager = new QNetworkAccessManager(this);QUrl url("https://ocr.cn - hangzhou.aliyuncs.com/ocr/general");QUrlQuery query;query.addQueryItem("AccessKeyId", accessKeyId);query.addQueryItem("Format", "JSON");query.addQueryItem("Version", "2019 - 12 - 30");QString timestamp = QDateTime::currentDateTimeUtc().toString(Qt::ISODate);query.addQueryItem("Timestamp", timestamp);query.addQueryItem("SignatureMethod", "HMAC - SHA1");query.addQueryItem("SignatureVersion", "1.0");QString content = getBase64FromPixmap(pixmap);QJsonObject requestBody;requestBody["image"] = content;QJsonDocument doc(requestBody);QByteArray postData = doc.toJson(QJsonDocument::Compact);QString stringToSign = "POST&%2Focr%2Fgeneral&" + QUrl::toPercentEncoding(query.toString(QUrl::FullyEncoded));QByteArray hmac = QCryptographicHash::hash(QByteArray(accessKeySecret + "&").toUtf8(), QCryptographicHash::Sha1);QString signature = QUrl::toPercentEncoding(QByteArray(hmac.toBase64().trimmed()));query.addQueryItem("Signature", signature);url.setQuery(query);QNetworkRequest request(url);request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");QNetworkReply* reply = manager->post(request, postData);connect(reply, &QNetworkReply::finished, [reply]() {if (reply->error() == QNetworkReply::NoError) {QByteArray responseData = reply->readAll();QJsonDocument responseDoc = QJsonDocument::fromJson(responseData);QJsonObject responseObj = responseDoc.object();// 处理识别结果} else {qDebug() << "请求失败: " << reply->errorString();}reply->deleteLater();});
}
  1. 解析识别结果并写入 Excel
    • 解析阿里云 API 返回的 JSON 数据,提取所需信息。然后使用libxlsxwriter库将信息写入 Excel 文件。
#include "xlsxwriter.h"void writeToExcel(const QString& filePath, const QList<QString>& dataList) {lxw_workbook* workbook = workbook_new(filePath.toUtf8().constData());lxw_worksheet* worksheet = workbook_add_worksheet(workbook, NULL);for (int i = 0; i < dataList.size(); ++i) {worksheet_write_string(worksheet, i, 0, dataList[i].toUtf8().constData(), NULL);}workbook_close(workbook);
}

  1. 批量处理
    • 遍历指定文件夹下的所有图片和 PDF 文件,依次进行处理。
#include <QDir>void batchProcess(const QString& folderPath, const QString& accessKeyId, const QString& accessKeySecret) {QDir dir(folderPath);foreach (QString file, dir.entryList(QDir::Files)) {if (file.endsWith(".pdf")) {QString pdfFilePath = folderPath + "/" + file;int pageCount = 0;Poppler::Document* doc = Poppler::Document::load(pdfFilePath);if (doc &&!doc->isLocked()) {pageCount = doc->numPages();delete doc;}for (int i = 0; i < pageCount; ++i) {QPixmap pixmap = pdfPageToPixmap(pdfFilePath, i);sendOcrRequest(pixmap, accessKeyId, accessKeySecret);}} else if (file.endsWith(".jpg") || file.endsWith(".png")) {QString imageFilePath = folderPath + "/" + file;QPixmap pixmap(imageFilePath);sendOcrRequest(pixmap, accessKeyId, accessKeySecret);}}
}

在实际应用中,你需要将accessKeyIdaccessKeySecret替换为你自己的阿里云访问密钥,并根据实际需求进一步完善代码,例如处理更复杂的识别结果解析、优化 Excel 写入格式等。

相关文章:

图片PDF区域信息批量提取至Excel,基于QT和阿里云api的实现方案

办公文档处理&#xff1a;在企业日常办公中&#xff0c;经常会遇到大量的扫描文档&#xff08;如发票、合同、报表等&#xff09;以图片或 PDF 格式存储。需要将这些文档中的特定区域信息&#xff08;如发票金额、合同条款、报表数据等&#xff09;提取出来&#xff0c;整理到 …...

Java 大视界 -- Java 大数据在智能教育中的应用与个性化学习(75)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也期待你毫无保留地分享独特见解,愿我们于此携手成长,共赴新程!💖 一、…...

从零手写Spring IoC容器(二):bean的定义与注册

从零手写Spring IoC容器&#xff08;二&#xff09;&#xff1a;bean的定义与注册 一. 回顾简单容器的不足之处 在第一章中&#xff0c;我们实现了一个最简单的 IoC 容器&#xff0c;但该版本存在诸多不足&#xff0c;例如&#xff1a; Bean 的管理方式过于简单&#xff0c;…...

《大模型面试宝典》(2025版) 发布了

基于去年我们写的《大模型面试宝典》(2024版)的基础上&#xff0c;我根据自己实践经验和星球小伙伴的面经分享总结推出《大模型面试宝典》(2025版)&#xff0c;共计52w字。 与去年相比&#xff0c;内容增加了星球成员面试真题分享、大模型最新考试要点总结、DeepSeek 项目实战…...

AWS门店人流量数据分析项目的设计与实现

这是一个AWS的数据分析项目&#xff0c;关于快消公司门店手机各个门店进店人流量和各个产品柜台前逗留时间&#xff08;利用IoT设备采集&#xff09;和销售数据之间的统计分析&#xff0c;必须用到但不限于Amazon Kensis Data Stream&#xff0c;Spark Streaming&#xff0c;Sp…...

出租车特殊计费表算法解析与实现

目录 引言算法核心概念 特殊计费规则解析数据类型与输入输出算法数学原理 数字位判断与处理逻辑数值转换与累加计算算法框架图Python 实现 代码展示代码解析Python 实现的优势与局限C 语言实现 代码展示代码解析C 语言实现的性能特点性能分析与优化 性能分析 时间复杂度空间复杂…...

文档解析技术:如何高效提取PDF扫描件中的文字与表格信息?

想要高效提取PDF扫描件中的文字与表格信息&#xff0c;通常需要借助专业的工具或在线服务&#xff0c;以下是一些可行的方法&#xff1a; 预处理扫描件&#xff1a;在提取文字之前&#xff0c;尽量确保扫描件的图像质量清晰。如果扫描件模糊或有污渍&#xff0c;可以使用图像处…...

【2】高并发导出场景下,服务器性能瓶颈优化方案-异步导出

Java 异步导出是一种在处理大量数据或复杂任务时优化性能和用户体验的重要技术。 1. 异步导出的优势 异步导出是指将导出操作从主线程中分离出来&#xff0c;通过后台线程或异步任务完成数据处理和文件生成。这种方式可以显著减少用户等待时间&#xff0c;避免系统阻塞&#x…...

【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力

欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html&#xff09;原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】6. DeepSeek R1&#xff1a;通过强化学习激发大语言模型的推理能力 【DeepSeek论…...

frida 通过 loadLibrary0 跟踪 System.loadLibrary

static {System.loadLibrary("libxxx.so"); }在 ndk 开发中&#xff0c;常见的实践是在 static 代码块里调用 loadLibrary 加载动态库。由于 apk 从 java 层开始启动&#xff0c;过早地 hook 原生代码会找不到函数。所以一种常见做法是在 loadLibrary 的 hook 回调里…...

【2025最新计算机毕业设计】基于SSM的智能停车场管理系统【提供源码+答辩PPT+文档+项目部署】(高质量源码,可定制,提供文档,免费部署到本地)

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...

【含文档+PPT+源码】Python爬虫人口老龄化大数据分析平台的设计与实现

项目介绍 本课程演示的是一款Python爬虫人口老龄化大数据分析平台的设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Python学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本…...

文本生图的提示词prompt和参数如何设置(基于Animagine XL V3.1)

昨天搞了半天 Animagine XL V3.1&#xff0c;发现市面上很多教程只是授之以鱼&#xff0c;并没有授之以渔的。也是&#xff0c;拿来赚钱不好吗&#xff0c;闲鱼上部署一个 Deepseek 都能要两百块。这里我还是想写篇文章介绍一下&#xff0c;虽不全面&#xff0c;但是尽量告诉你…...

快速提取Excel工作簿中所有工作表的名称?

大家好&#xff0c;我是小鱼。 在Excel表格中如何快速提取工作簿中所有工作表的名称&#xff1f;这个问题在日常工作中也经常遇到&#xff0c;比如说经常使用的INDIRECT函数跨工作表汇总或者制作类似于导航的工作表快捷跳转列表&#xff0c;就需要每个工作表的名称。如果工作表…...

【紫光同创PG2L100H开发板】盘古676系列,盘古100Pro+开发板,MES2L676-100HP

本原创文章由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 一&#xff1a;开发系统介绍 开发系统概述 MES2L676-100HP开发板采用紫光创 logos2系列 FPGA&#xff0c;型号&#x…...

Node.JS 版本管理工具 Fnm 安装及配置(Windows)

Fnm 安装及配置&#xff08;Windows&#xff09; Fnm&#xff08;Fast Node Manager&#xff09;?? 一个快速而简单的 Node.js 版本管理工具&#xff0c;使用 Rust 编写。 1 安装 官网&#xff1a;Fnm&#xff08;镜像网站 &#xff09;。 下载&#xff1a;Fnm&#xff08…...

labview通过时间计数器来设定采集频率

在刚接触labview的时候&#xff0c;笔者通常用定时里的等待函数来实现指令的收发&#xff0c;但是当用到的收发消息比较多时就出现了卡顿&#xff0c;卡死的情况&#xff0c;这是因为当用队列框架时&#xff0c;程序卡在了其中的一个分支里&#xff0c;等通过相应的延时后才可以…...

汇编JCC条件跳转指令记忆

汇编中的条件跳转指令&#xff08;JCC&#xff09;&#xff1a; 1. 理解标志寄存器 JCC 指令依赖于标志寄存器&#xff08;FLAGS&#xff09;的状态&#xff0c;常见的标志位有&#xff1a; ZF&#xff08;Zero Flag&#xff09;&#xff1a;结果为0时置1。 CF&#xff08;Ca…...

HTML排版标签、语义化标签、块级和行内元素详解

目录 前言 一、HTML中的排版标签 1. 文本相关标签 1.1 标题标签 ~ 1.2 段落标签 1.3 强调和加粗 1.4 换行标签 1.5 水平线标签 二、HTML中的语义化标签 2.1 语义化标签概述 2.2 常见的语义化标签 示例&#xff08;核心代码部分&#xff09;&#xff1a; 三、HTM…...

【回溯+剪枝】单词搜索,你能用递归解决吗?

文章目录 79. 单词搜索解题思路&#xff1a;回溯&#xff08;深搜&#xff09; 剪枝 79. 单词搜索 79. 单词搜索 ​ 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 …...

Windows平台QT BLE开发避坑指南:从环境搭建到稳定通信

1. Windows平台QT BLE开发环境搭建 在Windows平台上使用QT进行BLE开发&#xff0c;首先需要确保开发环境正确配置。我遇到过不少开发者因为环境问题卡在第一步&#xff0c;白白浪费好几天时间。这里分享几个关键点&#xff1a; 编译器选择是第一个坑。实测发现必须使用MSVC编译…...

NCM格式转换实战指南:ncmdumpGUI全面解析

NCM格式转换实战指南&#xff1a;ncmdumpGUI全面解析 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾为网易云音乐下载的NCM格式音乐无法在其他设备播…...

ARM Cortex-X4/X925处理器仿真模型与指令集详解

1. ARM Cortex-X4/X925处理器仿真模型概述处理器仿真模型在现代芯片设计中扮演着至关重要的角色&#xff0c;特别是在Arm架构的生态系统中。作为Arm最新一代高性能核心&#xff0c;Cortex-X4和X925的Iris仿真组件提供了完整的指令集和微架构行为建模&#xff0c;使开发者能够在…...

为什么92%的设计师调不出正宗铂金印相?3个被忽略的色彩科学陷阱与CIE LAB空间修正公式

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;铂金印相的视觉本质与历史语境 铂金印相&#xff08;Platinum Print&#xff09;并非一种数字图像处理技术&#xff0c;而是一种19世纪末诞生于摄影化学工艺巅峰的物理显影体系。其视觉本质在于——铂金…...

基于Databerry的私有数据AI应用构建:从RAG原理到生产部署

1. 项目概述&#xff1a;一个开箱即用的AI应用构建平台如果你正在寻找一个能快速将私有数据&#xff08;比如公司文档、个人笔记、产品手册&#xff09;转化为智能问答机器人的工具&#xff0c;但又不想从零开始折腾复杂的向量数据库、嵌入模型和API集成&#xff0c;那么gmpetr…...

2026 私域救命玩法!90% 的老板赚不到钱,根本不是产品不行

我在杭州做电商、做私域、做投资这么多年&#xff0c;见过各行各业的起起伏伏。这些年接触过的实体老板&#xff0c;没有一百也有八十。手里握着工厂的、拿着自主知识产权的、有正规生产资质的&#xff0c;比比皆是。但 90% 的人都在亏钱。他们天天抱怨流量太贵、同行乱价、客户…...

边缘计算赋能工业智能化:重大危险源监测+产线控制+视觉分析一体化解决方案

在工业 4.0 与智能制造深度融合的今天&#xff0c;工业现场产生的数据量呈指数级增长。传统的 "云端集中式" 数据处理架构在面对毫秒级实时控制、海量视觉数据传输、高危场景 724 小时不间断监测等需求时&#xff0c;逐渐暴露出延迟高、带宽成本大、网络依赖强、数据…...

大疆M4系列+YOLOV8识别算法 如何训练无人机罂粟识别检测数据集 让非法种植无处可藏:无人机+AI罂粟识别数据集发布,覆盖花期_果期多阶段检测 无人机俯拍+AI识别罂粟

无人机俯拍AI识别罂粟&#xff0c;准确率超95%&#xff01;&#xff0c;助力禁毒攻坚》​ 《科技禁毒再升级&#xff01;YOLO实测mAP 83.9%》​ 《让非法种植无处可藏&#xff1a;无人机AI罂粟识别数据集发布&#xff0c;覆盖花期/果期多阶段检测 智慧巡检 {专业级AI巡查无人机…...

从巨头并购看FPGA技术演进与国产破局之路

1. 从两起世纪并购看FPGA的宿命与价值2015年&#xff0c;英特尔以167亿美元吞下Altera&#xff1b;2022年情人节&#xff0c;AMD用全股票交易正式将赛灵思&#xff08;Xilinx&#xff09;收入囊中。这两起震动半导体行业的并购案&#xff0c;表面看是巨头在“买公司”&#xff…...

科技领跑公益,擎天租机器人“天团”助阵2026渣打上海10公里跑

5月16日&#xff0c;“渣打上海10公里跑”在上海世博庆典广场开跑。国内领先机器人一站式应用平台擎天租携旗下多款明星机器人参与&#xff0c;通过机器人与体育活动的跨界融合&#xff0c;为现场4500名跑者带来了一场科技感十足的助跑盛宴。本次赛事涵盖了10公里个人跑及2公里…...