QT案例实战1 - 从零开始编写一个OCR工具软件 (8) Pdf读取展示/截图/文字识别
一、PDF读取展示功能
QT提供了pdf、PdfWidgets模块,需要安装模块,然后在项目的CMakeLists.txt文件内,添加如下代码,以便在项目中使用。
官方提供了完整的pdf展示示例,示例1:基于小部件的 PDF 查看器,允许滚动页面。示例2:一个允许滚动页面的 Qt Quick PDF 查看器。
https://doc.qt.io/qt-6/qtpdf-examples.htmlhttps://doc.qt.io/qt-6/qtpdf-examples.html CMakeLists.txt文件。
find_package(Qt6 REQUIRED COMPONENTS Pdf)
find_package(Qt6 REQUIRED COMPONENTS PdfWidgets)target_link_libraries(QtFFmpegApp2 PRIVATE Qt6::Pdf)
target_link_libraries(QtFFmpegApp2 PRIVATE Qt6::PdfWidgets)
二、功能初步设计
1、功能简述
左侧进行pdf的展示,右侧是ocr识别的结果的展示区域。
2、pdfview控件
需要把控件提升为QPdfView,在设计的左侧菜单是看不到的。
m_document = new QPdfDocument(this);//目录,我这里不需要目录,所以没有展示//QPdfBookmarkModel *bookmarkModel = new QPdfBookmarkModel(this);//bookmarkModel->setDocument(m_document);//ui->bookmarkView->setModel(bookmarkModel);ui->pdfView->setZoomMode(QPdfView::FitToWidth);//ui->pdfView->setZoomFactor(0.8);ui->pdfView->setDocument(m_document);
3、读取pdf
点击选择pdf按钮的按钮,选择了pdf之后调用open方法进行打开。
void PdfViewWindow::on_pushButton_clicked()
{QUrl toOpen = QFileDialog::getOpenFileUrl(this, tr("Choose a PDF"), QUrl(), "Portable Documents (*.pdf)");if (toOpen.isValid())open(toOpen);
}
4、展示pdf
这里只要把本地pdf文件的路径传递给QPdfDocument,就可以打开pdf文件。
void PdfViewWindow::open(const QUrl &docLocation)
{if (docLocation.isLocalFile()) {m_document->load(docLocation.toLocalFile());const auto documentTitle = m_document->metaData(QPdfDocument::Title).toString();setWindowTitle(!documentTitle.isEmpty() ? documentTitle : QStringLiteral("PDF Viewer"));ui->label->setText("共" + QString::number(ui->pdfView->pageNavigation()->pageCount()) + "页");ui->lineEdit->setText(QString::number(1));} else {QMessageBox::critical(this, tr("Failed to open"), tr("%1 is not a valid local file").arg(docLocation.toString()));}
}
5、截图/文字识别
QPdfDocument给我们提供了render方法,让我们可以获取截图。获得到图片之后启动新线程,进行ocr识别,这里的线程和之前图片ocr的是同一个,处理方式也是一摸一样。
/*** @brief PdfViewWindow::on_pushButton_3_clicked* 文字提取*/
void PdfViewWindow::on_pushButton_3_clicked()
{QString filePath = QString("%1\\screen.jpg").arg(qApp->applicationDirPath().replace("/", "\\"));//渲染到图片//size = m_document->pageSize(1);//QSize(600, 800)int page = ui->pdfView->pageNavigation()->currentPage();QSize origin = m_document->pageSize(page).toSize();QSize *newsize = new QSize(origin.width()*2, origin.height()*2);QImage image = m_document->render(page, *newsize);image.save(filePath, "jpg");//清空右侧文本框ui->textEdit->setText("");//实例化loading窗口loading = new LoadingDialog(this);loading->setVisible(true);//启动线程m_thread = new MyThreadForTextRecognition;m_thread->init(filePath.toStdString(), QString("%1\\screen_action.jpg").arg(qApp->applicationDirPath().replace("/", "\\")).toStdString(), ui->comboBox->currentIndex(), ui->checkBox_3->isChecked(), ui->comboBox_2->currentIndex());connect(m_thread, &MyThreadForTextRecognition::getRecognitionText,this,&PdfViewWindow::getRecognitionText);connect(m_thread, &MyThreadForTextRecognition::recognitionFinish,this,&PdfViewWindow::recognitionFinish);m_thread->start();
}
QT案例实战1 - 从零开始编写一个OCR工具软件 (8) Pdf读取展示/截图/文字识别相关推荐
- QT案例实战1 - 从零开始编写一个OCR工具软件 (7) 屏幕截图/图像展示/文字识别
一.图片文字识别功能 在之前的的文章中,引入了ocr识别引擎,也在线程内实现了调用引擎进行识别.基本功能都有了,就可以把功能和UI组织在一起了. 关于图片文字识别的功能,UI分两部分,左侧实现屏幕截图 ...
- QT案例实战1 - 从零开始编写一个OCR工具软件 (3)创建项目
一.创建项目 打开Qt Creator,点击Create Project. 可以看到项目类型有应用.应用for python.类库等等,这里选择第一个QT应用,然后第二个栏中选择QT Weidgets ...
- QT案例实战1 - 从零开始编写一个OCR工具软件 (6) 关于QThread线程的使用
一.为什么用线程 在这里将ocr识别的这个耗时的操作放在新线程内,这样是为了主线程/UI界面不会卡在那里没有响应.如果说不在乎用户体验,ocr识别也可以放在主线程,卡住就卡住,就是会被骂. 不过关于线 ...
- 从零开始编写一个上位机(串口助手)QT Creator + Python
提示:本博客作为学习笔记,有错误的地方希望指正,此文可能会比较长,作为学习笔记的积累,希望对来着有帮助. 绪论:笔者这里使用的是QTCreator和Python来实现一个简单的串口上位机的开发的简 ...
- 从零开始编写一个vue插件
title: 从零开始编写一个vue插件 toc: true date: 2018-12-17 10:54:29 categories: Web tags: vue mathjax 写毕设的时候需要一 ...
- 从零开始编写一个宠物识别系统(爬虫、模型训练和调优、模型部署、Web服务)
心血来潮,想从零开始编写一个相对完整的深度学习小项目.想到就做,那么首先要考虑的问题是,写什么? 思量再三,我决定写一个宠物识别系统,即给定一张图片,判断图片上的宠物是什么.宠物种类暂定为四类--猫. ...
- Linux驱动开发(从零开始编写一个驱动程序)
1.系统整体工作原理 (1)应用层->API->设备驱动->硬件 (2)API:open.read.write.close等 (3)驱动源码中提供真正的open.read.write ...
- C#:调用百度接口实现文字识别(准备做一个截图文字识别软件)
近期在做毕业设计,发现查看论文的时间太多了,然而百度文库或是PDF的文档要想复制真是费劲至极,于是准备做一个个人使用的截图文字识别软件,可以提高工作效率.那下面就做个简单介绍. 第一步:获取到你的AP ...
- mac 文字识别软件ocr_mac超快速ocr文字识别软件 mac上超好用的文字识别软件推荐...
OCR文字识别软件是在日常的生活和工作中十分常用的一款软件.而当下使用mac系统的用户也越来越多了,相比较于windows不同的是,mac上能够使用的ocr用具基本上会比较难找.这里就为大家推荐几款在 ...
最新文章
- Linux下搭建一个简单的UDP通信
- 在记录实体log信息的时候,2个公司的区别
- testing your idea
- 【剪枝算法】通过网络瘦身学习高效的卷积网络Learning Efficient Convolutional Networks through Network Slimming论文翻译
- 自定义线程池-线程类和任务类代码实现
- 件工程项目开发最全文档模板_一文带你了解微信小程序社区和小程序开发
- 存储时间:立足SATA 百变GoFlex只是开始
- 异常 java.net.SocketTimeoutException: Read timed out
- php视频系统源码,基于ThinkPHP框架仿优酷视频源码带数据,后台功能强大
- RIME-使用小心得
- 高效记忆/形象记忆(09)110数字编码表 31-40
- ASP网页HTTP 错误 404.3 - Not Found解决方案
- 百旺红字发票信息表显示服务器返回为空,红字发票信息表状态详细说明
- python-鸢尾花分类
- 使用长角牛演示:防止ARP协议被攻击原理和配置
- 汉文化资讯社区(maven ,SSM ,MySQL)
- #define 宏的边际效应是什么
- 面试谈薪资,别不好意思,4个技巧帮你勇敢谈薪
- uni-app写小程序音乐播放器
- php 百度权重查询系统,查百度—百度网站权重SEO工具查询_PHP教程