1. 为什么选择Qt+PaddleOCR来打造你的第一个OCR工具?
如果你正在寻找一个既能快速上手,又能做出实用、跨平台桌面应用的技术组合,那么Qt加上PaddleOCR绝对是一个让你惊喜的“黄金搭档”。我刚开始接触这个方向时,也尝试过不少方案,比如纯Python的Tkinter+EasyOCR,或者用C#写WinForm。但最后发现,Qt的成熟稳定和PaddleOCR的强悍识别能力结合起来,才是真正能做出“拿得出手”的工具的路径。
简单来说,Qt负责搞定所有“看得见”的部分。它就像一个万能的工具箱,能让你用同一套代码,轻松做出在Windows、macOS甚至Linux上都能运行的漂亮界面。无论是截图、按钮、文本框,还是复杂的布局,Qt都提供了现成的、高度可定制的组件。而PaddleOCR,则是百度开源的一个“学霸级”OCR引擎,它负责所有“看不见”的复杂计算——把图片里的文字,无论是印刷体还是有一定挑战的手写体,都准确地“读”出来。它的模型精度在开源领域是第一梯队的,而且对中文的支持天生就非常好。
这个组合最吸引我的地方在于“平衡”。你不需要像研究纯C++推理框架那样深入底层,PaddleOCR提供了比较清晰的C++接口;你也不需要为跨平台分发而头疼,Qt的部署机制相对成熟。整个开发过程,更像是在搭积木:用Qt搭好房子的框架和装修,然后把PaddleOCR这个强大的“智能管家”请进来。接下来,我就把我从零开始搭建这个工具的全过程,包括我踩过的坑和总结的技巧,毫无保留地分享给你。你会发现,跟着步骤走,把一个想法变成可用的软件,并没有想象中那么难。
2. 搭建开发环境:避开初学者的第一个大坑
万事开头难,环境配置往往是劝退新手的第一关。别担心,我这里会提供两种最主流的方案:Visual Studio方案和Qt Creator方案。你可以根据自己的习惯和最终发布需求来选择。我个人的经验是,在Windows下用VS开发调试更舒服,但最终打包发布时,Qt Creator项目的平台兼容性和依赖管理更清晰。
2.1 方案一:在Visual Studio中安家落户
假设你已经在电脑上安装好了Visual Studio(我用的VS2017)和对应版本的Qt(我的是Qt 5.13.2 MSVC2017 64bit),那么第一步就是创建一个新的Qt Widgets Application项目。
项目建好后,别急着写代码。我们需要把“原材料”搬运进来。首先,去PaddleOCR的官方GitHub仓库,找到C++推理的Demo部分,通常是一个叫 cpp_infer 的文件夹。把这个文件夹整个复制到你的项目目录下,为了清晰起见,我把它重命名为 PaddleOCR。这个文件夹里包含了调用PaddleOCR引擎所需的所有核心C++源文件和头文件。
接着,我们需要一个截图功能。你可以自己写一个,也可以直接用我项目中现成的 ScreenWidget 类(包含 screen.h, screen.cpp, screenwidget.h, screenwidget.cpp 四个文件)。把它们也复制到项目目录下。
现在,在VS的“解决方案资源管理器”里,把这些新加入的 .cpp 和 .h 文件通过“添加->现有项”全部导入到项目中。一个常见的坑是文件编码,为了彻底避免中文乱码,我强烈建议你进行这个设置:在项目属性页,找到 C/C++ -> 命令行,在“其他选项”里添加 /utf-8 这个编译选项。
最关键的一步来了:配置依赖库。在项目根目录下新建一个 3rdparty 文件夹,这里将存放所有“外援”。你需要准备三样东西:
- Paddle Inference库:从PaddlePaddle官网下载Windows版的C++预测库,将其中的
paddle_inference_install_dir文件夹放入3rdparty。 - OpenCV:下载OpenCV的Windows预编译包,将
build目录下的include和x64/vc15/lib(对应VS2017)中的必要文件,整理到3rdparty/opencv下。我们主要需要opencv_world440.lib和opencv_world440.dll。 - PaddleOCR模型文件:下载PaddleOCR提供的预训练模型,例如
ch_ppocr_server_v2.0系列(检测、识别模型)和ch_ppocr_mobile_v2.0_cls_infer(方向分类模型)。在3rdparty同级目录创建Model文件夹,把解压后的模型放进去。
配置VS的附加包含目录和库目录。在项目属性 C/C++ -> 常规 -> 附加包含目录 中,添加Paddle Inference和OpenCV的include路径。在 链接器 -> 常规 -> 附加库目录 中,添加对应的lib文件路径。最后,在 链接器 -> 输入 -> 附加依赖项 中,填入 paddle_inference.lib、opencv_world440.lib 等库文件名。


9228

被折叠的 条评论
为什么被折叠?



