AIGC(生成式AI)试用 41 -- 程序(Python + OCR)-3

  • 从模糊到清晰,需要更有条理、逻辑的提问
  • 持续纠偏,不断完善提示,获取满足需求的结果
  • 提示词不在多,清晰、准确、简短、层次更有效
  • 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 复制代码
    - 开发环境: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 复制代码
当前环境已是 `Python 3.13.7`,满足要求,无需额外安装。下一步可以继续使用 `uv` 创建虚拟环境并安装后续依赖。
  • 提问 3-2: 请先检查uv状态,如无uv环境,请自动安装
python 复制代码
已经安装 uv 0.8.13,状态正常,可以直接用于后续虚拟环境与依赖管理。需要我继续创建环境或安装依赖吗?
  • 提问 3-3:是的,请继续创建环境、安装依赖
python 复制代码
- 已用 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 复制代码
# 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命令,并显示结果
python 复制代码
如需完整列表或导出需求文件,可告知我下一步操作。
  • 提问 3-7:请显示完整列表 -- 安装的工具如此之多,每一种都需要?待验证。可以生成requirement文件。。。
python 复制代码
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项目
python 复制代码
- 已运行 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) > 底部状态栏:显示图片文字识别进度 及选中功能 -- 暂不实现 > 根据实际需要进行界面优化,代码优化 |

python 复制代码
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'


  • 打开文件夹(File -> Open Folder): cursor/RegPic
  • 打开终端(View -> Terminal)
  • New Chat

开发者角色,以较专业的方式尝试一步步提问,Cursor给出一步步的指导,并辅助 Run 直接生成代码

|----------------------------------------------------------------------------|----------------------------------------------------------------------------|
| 提问:显示当前python版本 ||
| python --version Python 3.13.7 || | ![](https://i-blog.csdnimg.cn/direct/dbf423b3891a48038d5a72d7f6c809cc.png) || | 提问:显示当前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 || | ![](https://i-blog.csdnimg.cn/direct/000a173f493541e1ae981589e6fa7b6f.png) | ![](https://i-blog.csdnimg.cn/direct/2aa46a6bd4c5469c983ff8fcf14ef320.png) | | 提问:激活当前venv环境,并在terminal终端中显示当前venv环境 || | .\.venv\Scripts\Activate.ps1 ||
| ||
| 提问:当前环境下,初始化项目 ||
| $ uv init ||
| | |
| 提问:配置依赖库镜像文件 uv.toml,加速下载,url为"https://pypi.tuna.tsinghua.edu.cn/simple" ||
| # 未能理解提问,输出结果无法应用 ||

参考:

相关推荐
eybk1 小时前
使用Beeware开发文件浏览器获取Android15的文件权限
python
柒柒钏2 小时前
VSCode 终端配置与 Python 虚拟环境使用指南
ide·vscode·python
环己酮2 小时前
py数据科学学习笔记day4-空间数据统计分析与可视化(2)
python
酥风2 小时前
AI概念解惑系列 - RAG
前端·llm·aigc
q***48253 小时前
基于python语言的网页设计(手把手教你设计一个个人博客网站)
开发语言·python
qq_22589174663 小时前
基于Python+Django餐饮评论大数据分析与智能推荐系统 毕业论文
开发语言·后端·python·信息可视化·数据分析·django
FreakStudio3 小时前
串口协议解析实战:以 R60ABD1 雷达为例,详解 MicroPython 驱动中数据与业务逻辑的分离设计
python·单片机·pycharm·嵌入式·面向对象·硬件·电子diy
南山安3 小时前
让 LLM 与外界对话:使用 Function Calling 实现天气查询工具
人工智能·后端·python
安思派Anspire3 小时前
使用LangGraph构建自主RAG(3)
aigc·openai·agent