AIGC(生成式AI)试用 41 -- 程序(Python + OCR)-3
AIGC(生成式AI)试用 41 -- 程序(Python + OCR)-3
个人理解:
- 从模糊到清晰,需要更有条理、逻辑的提问
- 持续纠偏,不断完善提示,获取满足需求的结果
- 提示词不在多,清晰、准确、简短、层次更有效
- AI可以协助完成你不熟悉的需求,然而如果希望更有效的结果,必须专业的基础知识
- 理解开发过程最佳实践:原始需求 -- 分解确认 -- 分析设计 -- 构建环境 -- 编码实现 -- 测试优化 -- 部署优化
- 使用成熟工具,避免闭门造车,利用AI辅助,提升效率和结果展示
以非开发者用户角色、以聊天的方式进行代码开发,使用Cursor IDE环境
- 安装Cursor
- New Chat
- 开启聊天编程模式
- 提问1:
我有一些图片文件
1. 希望能够开发一个工具识别图片中的文字
2. python挺流行,希望使用它来开发
3. 需要图形界面,这样好操作一些,网上推荐使用QT,美观和扩展性更好
请依据以上需求,推荐最佳的开发环境、所需开发工具。
最终结果以表格形式输出,表头:环境、工具、优势/劣势
- 提问1-1:表格格式显示的不友好,请重新输出 -- 格式输出混乱,重新提问
- 提问1-2:目前已有python3.13环境,OCR引擎更倾向使用paddler,请据此重新生成以上问题结果
- 提问1-3:还需要uv需拟环境,以方便打包及模块版本控制,据此重新整理最新结果 -- 补充提问遗漏
- 提问1-4:总结以上输出,说明最终开发所需最佳的环境、语言、引入模块- 开发环境:Python 3.13 官方发行版,使用 uv 管理虚拟环境与依赖,配合 PyCharm Professional 或 VS Code 作为主要 IDE,并通过 Git + GitHub/GitLab 做版本控制。 - 核心语言:Python(3.13),结合 uv 提供的虚拟环境快速创建与锁定依赖。 - 关键模块与库:基于 PaddleOCR(含 PaddlePaddle)完成文字识别;界面层使用 Qt 6 搭配 PySide6(或 PyQt6);图像处理辅助可引入 pillow 与 opencv-python;部署阶段利用 PyInstaller/cx_Freeze 生成可执行程序。
| 环境 | 工具 | 优势/劣势 |
|---|---|---|
| 开发语言与运行环境 | Python 3.13(官方发行版) | 优势:提供最新语法特性与性能优化,兼容主流第三方库;配合 venv 或 uv 可快速创建隔离环境。<br>劣势:个别依赖可能尚未及时适配,需要关注兼容性更新。 |
| 虚拟环境与依赖管理 | uv(含虚拟环境管理与包安装) | 优势:创建与切换虚拟环境速度快;支持锁文件便于固定依赖版本;内置包安装加速(含镜像配置),适合打包前统一依赖。<br>劣势:生态相对新,部分教程与插件支持少于 pip/Poetry;团队成员需熟悉新工具。 |
| 包管理 | pip(配合 uv pip 或系统 pip)、Poetry 备选 | 优势:可安装 pillow、opencv-python、paddleocr、PyQt5/6 等必要依赖;Poetry 提供锁文件和脚本管理,便于多人协作。<br>劣势:国内下载可能受限,需要配置镜像;Poetry 初期配置与学习成本略高。 |
| OCR 引擎 | PaddleOCR(基于 PaddlePaddle) | 优势:深度学习模型,识别率高,支持中英文及多语种复杂排版;提供预训练模型与推理 API,扩展能力强。<br>劣势:模型文件较大,需同时部署 PaddlePaddle;GPU 加速需额外配置驱动与依赖。 |
| GUI 框架 | Qt 6 + PySide6(或 PyQt6) | 优势:跨平台、界面美观;Qt Designer 支持拖拽式界面设计;PySide6 为官方绑定,商业授权更友好。<br>劣势:安装体积大,学习曲线相对 Tkinter 更陡;打包需携带 Qt 运行库与资源。 |
| IDE / 编辑器 | PyCharm Professional 或 Visual Studio Code | 优势:PyCharm 提供完善的 Python 调试、虚拟环境与 Qt 插件支持;VS Code 轻量、扩展丰富(Python、Qt for Python、Git),适合与 uv 配合。<br>劣势:PyCharm 全功能需付费;VS Code 需自行配置扩展及调试任务。 |
| 打包与发布 | PyInstaller 或 cx_Freeze(结合 uv 锁定环境) | 优势:可将 Python+Qt+PaddleOCR 应用打包为独立可执行文件,uv 的锁文件有助于复现依赖版本;PyInstaller 对常见库支持成熟。<br>劣势:打包产物体积大;需处理 PaddleOCR 模型与 Qt 资源路径,可能编写自定义 hook。 |
| 版本控制 | Git 搭配 GitHub / GitLab | 优势:便于协作、代码审查与版本回退;结合 CI/CD 可自动测试与构建打包。<br>劣势:需掌握 Git 基本操作;私有仓库可能涉及费用或自建服务。 |
- 提问 2:最终选型为 python3.13 + uv + pyqt6 + paddler / pillow / opencv,请确认是否可以满足开发要求
- 提问 3:OK, 那么请指导我一步步的完成开发环境的构建,或者自动安装所需开发环境
- 提问 3-1:请先检查当前python版本,如果不满足python3.13,请自动安装
当前环境已是 `Python 3.13.7`,满足要求,无需额外安装。下一步可以继续使用 `uv` 创建虚拟环境并安装后续依赖。

- 提问 3-2: 请先检查uv状态,如无uv环境,请自动安装
已经安装 uv 0.8.13,状态正常,可以直接用于后续虚拟环境与依赖管理。需要我继续创建环境或安装依赖吗?

- 提问 3-3:是的,请继续创建环境、安装依赖
- 已用 uv venv .venv 创建虚拟环境,并通过 uv pip install --python .\.venv\Scripts\python.exe ... 安装 pyqt6、paddleocr、pillow、opencv-python 等核心依赖,环境就绪。
- PowerShell 默认执行策略阻止直接运行 Activate.ps1,可改用 Set-ExecutionPolicy RemoteSigned(管理员)或直接使用 uv run python app.py / .\.venv\Scripts\python.exe 方式启动项目。
- 如需继续打包流程,可在该环境中追加安装 pyinstaller 等工具;建议后续生成 pyproject.toml / 锁文件以便团队协作。

- 提问 3-4:暂不需要安装其他工具。请直接输出python, uv, paddle, pyqt 及其他安装工具版本,确认当前环境状态
- 提问 3-5:暂不需要安装其他工具。请直接显示python, uv, paddle, pyqt 及其他安装工具的版本,确认当前环境状态
# python --version → Python 3.13.7
# uv --version → uv 0.8.13 (ede75fe62 2025-08-21)
# paddleocr → 3.3.1(位于 .venv\Lib\site-packages,但未检测到 paddlepaddle 核心库,如需实际推理请后续按需安装 CPU/GPU 版本)
# pyqt6 → 6.10.0
# pillow → 12.0.0
# opencv-python → 4.12.0.88
当前虚拟环境已安装上述依赖,建议在开始编码前确认是否还需补充 paddlepaddle 或其他组件,然后再进行开发。

- 提问 3-6:请执行pip list命令,并显示结果
如需完整列表或导出需求文件,可告知我下一步操作。

- 提问 3-7:请显示完整列表 -- 安装的工具如此之多,每一种都需要?待验证。可以生成requirement文件。。。
Package Version
--------------------- -----------
aistudio-sdk 0.3.8
annotated-types 0.7.0
anyio 4.11.0
bce-python-sdk 0.9.52
certifi 2025.11.12
chardet 5.2.0
charset-normalizer 3.4.4
click 8.3.0
colorama 0.4.6
colorlog 6.10.1
filelock 3.20.0
fsspec 2025.10.0
future 1.0.0
h11 0.16.0
hf-xet 1.2.0
httpcore 1.0.9
httpx 0.28.1
huggingface-hub 1.1.2
idna 3.11
imagesize 1.4.1
modelscope 1.31.0
numpy 2.2.6
opencv-contrib-python 4.10.0.84
opencv-python 4.12.0.88
packaging 25.0
paddleocr 3.3.1
paddlex 3.3.9
pandas 2.3.3
pillow 12.0.0
prettytable 3.16.0
psutil 7.1.3
py-cpuinfo 9.0.0
pyclipper 1.3.0.post6
pycryptodome 3.23.0
pydantic 2.12.4
pydantic-core 2.41.5
pypdfium2 5.0.0
pyqt6 6.10.0
pyqt6-qt6 6.10.0
pyqt6-sip 13.10.2
python-bidi 0.6.7
python-dateutil 2.9.0.post0
pytz 2025.2
pyyaml 6.0.2
requests 2.32.5
ruamel-yaml 0.18.16
ruamel-yaml-clib 0.2.14
setuptools 80.9.0
shapely 2.1.2
shellingham 1.5.4
six 1.17.0
sniffio 1.3.1
tqdm 4.67.1
typer-slim 0.20.0
typing-extensions 4.15.0
typing-inspection 0.4.2
tzdata 2025.2
ujson 5.11.0
urllib3 2.5.0
wcwidth 0.2.14
- 提问 4:环境已OK。请初始化项目,开始编码实现需求 -- 此处结果有些混乱,需要重新提问

- 提问 4-1:请初始化uv项目
- 已运行 uv init,生成 pyproject.toml、README.md、uv.lock,项目正式纳入 uv 管理。
- 通过 uv add pyqt6 paddleocr pillow opencv-python 将核心依赖写入 pyproject.toml 并锁定版本。
dependencies = [
"opencv-python>=4.12.0.88",
"paddleocr>=3.3.1",
"pillow>=12.0.0",
"pyqt6>=6.10.0",
]
```
- 当前目录结构:`main.py`、`pyproject.toml`、`uv.lock`、空 `README.md`。后续可完善 README 并继续实现/测试 OCR 功能。
- 当前目录结构:main.py、pyproject.toml、uv.lock、空 README.md。后续可完善 README 并继续实现/测试 OCR 功能。

- 提问 4-2:请按以下需求描述,在当前环境下完成代码开发
|
- 系统名称:“图片文字识别系统” > 上部功能区(对象、属性、行为Action): > 中间图片显示区: > 底部状态栏:显示图片文字识别进度 及选中功能 -- 暂不实现 > 根据实际需要进行界面优化,代码优化 |
Summary
- Rebuilt main.py into a full PyQt6 desktop app “图片文字识别系统”,包含功能工具条、可缩放/可框选的图片视图、文本显示区和状态栏。
- 新增 ImageViewer 类支持橡皮筋选区、缩放(放大/缩小/重置)与默认全图识别区域;集成 PaddleOCR 识别流程并支持局部裁剪。
- 实现“选择图片”“选择区域”“缩放”“开始识别”“保存文字”等功能按钮及保存为同目录 *-reg.txt,同时保留“文字编辑”“保存格式”预留行为。


- 提问 4-2:请按以下需求描述,在当前环境下完成代码开发
作为Python + PyQT6开发专家,请按以下表格所述,构建GUI程序界面,并实现功能;优化代码,优化界面
| 位置 | 名称 | 类型 | 属性 | 事件 | GUI? | 功能? |
| 标题栏 | 图像文字识别系统 | 标题 |
长:1200 高:900 |
是 | 是 | |
| 第1层 | 打开 | 按钮 |
长:200 高:50 圆角矩形 背景浅蓝色 宋体,10号 居中对齐 |
点击后选择图像文件 | 是 |
是 全局变更使用错误 |
| 第1层 | 图像文件路径 | 输入框 |
长:400 高:50 宋体,10号 不可编辑 |
显示打开图像的文件全路径 | 是 | 是 |
| 第1层 | 选择区域 | 按钮 |
长:200 高:50 圆角矩形 宋体,10号 居中对齐 |
选择图像指定区域显示,并按操作显示文字 | 是 | 否 |
| 第1层 | 左旋 | 按钮 |
长:200 高:50 圆角矩形 宋体,10号 居中对齐 |
左旋90度 | 是 | 是 |
| 第1层 | 右旋 | 按钮 |
长:200 高:50 圆角矩形 宋体,10号 居中对齐 |
右旋90度 | 是 | 是 |
| 第1层 | 缩放 | 滑动条 |
长:200 高:50 圆角矩形 宋体,10号 居中对齐 |
左右滑动,图像进行缩小、放大显示 | 是 | 是 |
| 第1层 | 开始识别 | 按钮 |
长:200 高:50 圆角矩形 背景浅蓝色 宋体,10号 居中对齐 |
识别原始图片显示框中的文字内容 | 是 |
是 |
| 第1层 | 保存 | 按钮 |
长:200 高:50 圆角矩形 背景浅蓝色 宋体,10号 居中对齐 |
保存文字识别文本框中的文字显示,文件名为 原始图片名+reg.txt | 是 |
是 有错误 |
| 第2层 | 原始图片 | 显示框 |
长:600 高:600 |
显示原始图片 | 是 |
是 有错误 |
| 第2层 | 文字识别 | 多行文本框 |
长:600 高:600 宋体,10号 居上、居左对齐 可编辑 |
显示原始图片中识别的文字信息,格式排列与原始图片中文字一致 | 是 |
否 加入提示词 |
| 第3层 | 状态 | 状态栏 | 显示系统操作状态 |


- 提问 4-2:请按以下需求描述,在当前环境下完成代码开发
![]() |
![]() |
- 提问 4-3:请确认并修正以下问题
1. 界面整体大小 1200*600
2. imageviewer大小600*600,添加边框
3. 使用paddleocr,不使用paddlepaddle
** 到目前为止,整体的GUI界面已按要求实现,然面核心的图像识别仍不能正常运行
- 4-4:手工修正了以下错误
1) 缺少必要的模块:no module named paddle --> uv add paddlepaddle
2) sorted_lines = sorted(page, key=lambda x: x[0][0][1] if x[0] else 0) --> paddleocr识别后返回包含 12上字典元素的列表,key为'rec_texts'

- 提问 5:为验证当前程序是否满足需求,请为当前程序设计测试用例,输出以表格形式输出,格式:序号、功能描述、测试数据、测试步骤、预期结果
1)覆盖了所有基本功能
2)需增加功能操作所用数据
3)多功能交叉操作未覆盖
4)paddleocr涉及环境构建,需在部署测试中添加更多用例
| # | 功能描述 | 测试数据 | 测试步骤 | 预期结果 |
| 1 | 启动应用并加载GUI | 无 | 1) 运行 python main.py 2) 观察窗口尺寸、标题和布局 |
窗口标题为“图像文字识别系统”,默认大小 1200×600, 顶部工具栏+左右分区+状态栏完整显示 |
| 2 | 打开图片并显示路径 | 任一本地 JPG/PNG | 1) 点击“打开” 2) 选择图片文件 |
原图加载到左侧区域,路径栏显示文件全路径, 状态栏提示“图片已加载...”,开启选择/缩放/旋转/保存等按钮 |
| 3 | 选择区域功能 | 已加载图片 | 1) 点击“选择区域” 2) 在图像上拖拽矩形区域 |
选区高亮显示,松开后状态栏展示选区坐标和宽高 |
| 4 | 左/右旋转 | 已加载图片 |
1) 点击“左旋” 2) 再点“右旋” |
图片分别逆时针、顺时针旋转90°,状态栏提示对应旋转操作 |
| 5 | 缩放滑动条 | 已加载图片 | 1) 拖动缩放滑块到不同位置 | 图像按比例缩放(0.2x~5.0x),状态栏显示“缩放: x.x倍” |
| 6 | OCR 识别(全图) |
含中文文本图片 + 已安装 paddleocr |
1) 加载图片 2) 不选择区域 3) 点击“开始识别” |
状态栏显示进度,识别完成后右侧文本框出现文字, 提示“共 N 行结果” |
| 7 | OCR 识别(局部) | 同上 |
1) 加载图片 2) 选择局部区域 3) 点击“开始识别” |
仅识别选区内容,结果显示在文本框 |
| 8 | 保存识别文字 | 上一步生成文本 | 1) 点击“保存” |
在图片同目录生成 原图名reg.txt,内容为识别结果, 状态栏提示保存路径 |
| 9 | 缺少paddleocr模块提示 |
卸载 paddleocr 或在无依赖环境 |
1) 启动应用 2) 点击“开始识别” |
弹窗提示缺少模块,状态栏显示错误信息; 按钮保持可用但无法识别 |
| 10 | 无文本图片 | 空白或无字图片 |
1) 加载图片 2) 点击“开始识别” |
识别完成但文本框为空,状态栏提示“未检测到文本” |
| 11 | 编辑识别结果 | 已有文本结果 |
1) 手动修改文本框内容 2) 点击“保存” |
保存文件包含修改后的文本,未报错 |
| 12 |
错误处理 (选择非图像文件) |
选择非图像文件 |
1) 点击“打开” 2) 选择非图像 |
弹窗提示“无法加载所选图片”,状态栏保持原状态 |
* 功能增强
1)将图片边缘扩张1.2倍,增强文字识别准确度
2)通过局部选择功能,对已实别图片内容就是纠错、强化
3)批处理:对一个文件夹下的所有图片进行文字识别
4)对文件中的图片进行识别,doc / excel / ppt / pdf
5)优化界面
6)添加文件开发doc(summary)
- 打开文件夹(File -> Open Folder): cursor/RegPic
- 打开终端(View -> Terminal)
- New Chat
## 开发者角色,以较专业的方式尝试一步步提问,Cursor给出一步步的指导,并辅助 Run 直接生成代码
| 提问:显示当前python版本 | |
|
$ python --version |
|
|
|
|
| 提问:显示当前uv版本,如未检测到uv,请直接安装并显示安装步骤 | |
|
$ uv --version |
|
|
|
|
| 提问:在当前文件夹下创建uv虚拟环境 | |
|
$ uv venv |
|
|
|
|
| 提问:激活当前venv环境,并在terminal终端中显示当前venv环境 | |
|
$ .\.venv\Scripts\Activate.ps1 |
|
|
|
|
| 提问:当前环境下,初始化项目 | |
| $ uv init | |
|
|
|
| 提问:配置依赖库镜像文件 uv.toml,加速下载,url为“https://pypi.tuna.tsinghua.edu.cn/simple” | |
| # 未能理解提问,输出结果无法应用 | |
参考:
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐









所有评论(0)