个人理解:

  • 从模糊到清晰,需要更有条理、逻辑的提问
  • 持续纠偏,不断完善提示,获取满足需求的结果
  • 提示词不在多,清晰、准确、简短、层次更有效
  • AI可以协助完成你不熟悉的需求,然而如果希望更有效的结果,必须专业的基础知识
  • 理解开发过程最佳实践:原始需求 -- 分解确认 -- 分析设计 -- 构建环境 -- 编码实现 -- 测试优化 -- 部署优化
  • 使用成熟工具,避免闭门造车,利用AI辅助,提升效率和结果展示

以非开发者用户角色、以聊天的方式进行代码开发,使用Cursor IDE环境

  1. 安装Cursor
  2. New Chat
  3. 开启聊天编程模式
    - 提问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:请按以下需求描述,在当前环境下完成代码开发

- 系统名称:“图片文字识别系统”
- GUI界面大小:默认大小1200*900
- GUI分为 3 部分:上部功能区、中间图片加载及文字显示区、底部状态显示区。

> 上部功能区(对象、属性、行为Action):
  1) “选择图片” 圆角按钮(宽200,底色淡蓝)
      点击“选择图片”后,显示图片文件选择框,可选图片类型: jpg, bmp, png
  2) 图片文件路径文本框(宽200,不可编辑)
      点击“选择图片”后,显示图片文件路径及文件名
  3) “选择区域” 圆角按钮(宽150)
      点击“选择区域”后,可在原始图片框中画出一个矩形框,用来设定要识别的图像大小,默认大小为整个图片
  4) ”缩放“ 圆角按钮(宽150)
      点击“缩放”后,可对原始图片进行放大或缩小操作
  5) “开始识别” 圆角按钮(宽200,底色淡蓝)
      点击“开始识别”后,调用paddle模块识别原始图像中所有文字,显示在图片文字识别显示区域;状态栏显示图片文字识别进度
  6) “文字编辑” 圆角按钮(宽150) -- 暂不实现(直接可编辑)
      点击“文字编辑”后,可对图片文字识别显示不区域的文字进行编辑
  7) “保存格式” 下拉框(图片、Txt、图片&Txt)  --- 暂不实现
       选择识别文字的保存的格式:图片(识别文字显示在原始图片,格式与原始图片一致)、Txt(识别文字保存为Txt格式)-- 暂不实现
  8) ”保存文字” 圆角按钮(宽200,底色淡蓝)
       点击“保存文字”后,将图片文字识别显示区域的文字保存在图片同一目录下,命名为 图片名-reg.txt

> 中间图片显示区: 
  1)左侧,原始图片显示 区域(黑色边框,大小400*300)
  2)中间,分隔线,可调整左右区域大小
  3)右侧 图片文字识别显示 区域(黑色边框,大小400*300)

> 底部状态栏:显示图片文字识别进度 及选中功能 -- 暂不实现

> 根据实际需要进行界面优化,代码优化

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
Python 3.13.7

提问:显示当前uv版本,如未检测到uv,请直接安装并显示安装步骤

$ uv --version
uv 0.8.13 (ede75fe62 2025-08-21)

提问:在当前文件夹下创建uv虚拟环境

$ uv venv
Using CPython 3.13.7 interpreter at: C:\Python313\python.exe
Creating virtual environment at: .venv
Activate with: .venv\Scripts\activate 

提问:激活当前venv环境,并在terminal终端中显示当前venv环境

$ .\.venv\Scripts\Activate.ps1

提问:当前环境下,初始化项目
$ uv init

提问:配置依赖库镜像文件 uv.toml,加速下载,url为“https://pypi.tuna.tsinghua.edu.cn/simple”
# 未能理解提问,输出结果无法应用


参考:

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐