AIGC(生成式AI)试用 42 -- 程序(Python + OCR)-3
个人理解从模糊到清晰需要更有条理、逻辑的提问持续纠偏不断完善提示获取满足需求的结果提示词不在多清晰、准确、简短、层次更有效AI可以协助完成你不熟悉的需求然而如果希望更有效的结果必须专业的基础知识理解开发过程最佳实践原始需求 -- 分解确认 -- 分析设计 -- 构建环境 -- 编码实现 -- 测试优化 -- 部署优化使用成熟工具避免闭门造车利用AI辅助提升效率和结果展示以非开发者用户角色、以聊天的方式进行代码开发使用Cursor IDE环境安装CursorNew 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 做版本控制。 - 核心语言Python3.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劣势模型文件较大需同时部署 PaddlePaddleGPU 加速需额外配置驱动与依赖。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 锁定环境优势可将 PythonQtPaddleOCR 应用打包为独立可执行文件uv 的锁文件有助于复现依赖版本PyInstaller 对常见库支持成熟。br劣势打包产物体积大需处理 PaddleOCR 模型与 Qt 资源路径可能编写自定义 hook。版本控制Git 搭配 GitHub / GitLab优势便于协作、代码审查与版本回退结合 CI/CD 可自动测试与构建打包。br劣势需掌握 Git 基本操作私有仓库可能涉及费用或自建服务。- 提问 2最终选型为 python3.13 uv pyqt6 paddler / pillow / opencv请确认是否可以满足开发要求- 提问 3OK 那么请指导我一步步的完成开发环境的构建或者自动安装所需开发环境- 提问 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-python4.12.0.88, paddleocr3.3.1, pillow12.0.0, pyqt66.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 部分上部功能区、中间图片加载及文字显示区、底部状态显示区。 上部功能区对象、属性、行为Action1) “选择图片” 圆角按钮宽200底色淡蓝点击“选择图片”后显示图片文件选择框可选图片类型: jpg, bmp, png2) 图片文件路径文本框宽200不可编辑点击“选择图片”后显示图片文件路径及文件名3) “选择区域” 圆角按钮宽150点击“选择区域”后可在原始图片框中画出一个矩形框用来设定要识别的图像大小默认大小为整个图片4) ”缩放“ 圆角按钮宽150点击“缩放”后可对原始图片进行放大或缩小操作5) “开始识别” 圆角按钮宽200底色淡蓝点击“开始识别”后调用paddle模块识别原始图像中所有文字显示在图片文字识别显示区域状态栏显示图片文字识别进度6) “文字编辑” 圆角按钮宽150 -- 暂不实现直接可编辑点击“文字编辑”后可对图片文字识别显示不区域的文字进行编辑7) “保存格式” 下拉框图片、Txt、图片Txt --- 暂不实现选择识别文字的保存的格式图片识别文字显示在原始图片格式与原始图片一致、Txt识别文字保存为Txt格式-- 暂不实现8) ”保存文字” 圆角按钮宽200底色淡蓝点击“保存文字”后将图片文字识别显示区域的文字保存在图片同一目录下命名为 图片名-reg.txt 中间图片显示区1左侧原始图片显示 区域黑色边框大小400*3002中间分隔线可调整左右区域大小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*6002. imageviewer大小600*600添加边框3. 使用paddleocr不使用paddlepaddle** 到目前为止整体的GUI界面已按要求实现然面核心的图像识别仍不能正常运行- 4-4手工修正了以下错误1) 缺少必要的模块no module named paddle -- uv add paddlepaddle2) sorted_lines sorted(page, keylambda x: x[0][0][1] if x[0] else 0) -- paddleocr识别后返回包含 12上字典元素的列表key为rec_texts- 提问 5为验证当前程序是否满足需求请为当前程序设计测试用例输出以表格形式输出格式序号、功能描述、测试数据、测试步骤、预期结果1覆盖了所有基本功能2需增加功能操作所用数据3多功能交叉操作未覆盖4paddleocr涉及环境构建需在部署测试中添加更多用例#功能描述测试数据测试步骤预期结果1启动应用并加载GUI无1) 运行 python main.py2) 观察窗口尺寸、标题和布局窗口标题为“图像文字识别系统”默认大小 1200×600顶部工具栏左右分区状态栏完整显示2打开图片并显示路径任一本地 JPG/PNG1) 点击“打开”2) 选择图片文件原图加载到左侧区域路径栏显示文件全路径状态栏提示“图片已加载...”开启选择/缩放/旋转/保存等按钮3选择区域功能已加载图片1) 点击“选择区域”2) 在图像上拖拽矩形区域选区高亮显示松开后状态栏展示选区坐标和宽高4左/右旋转已加载图片1) 点击“左旋”2) 再点“右旋”图片分别逆时针、顺时针旋转90°状态栏提示对应旋转操作5缩放滑动条已加载图片1) 拖动缩放滑块到不同位置图像按比例缩放0.2x~5.0x状态栏显示“缩放: x.x倍”6OCR 识别全图含中文文本图片 已安装 paddleocr1) 加载图片2) 不选择区域3) 点击“开始识别”状态栏显示进度识别完成后右侧文本框出现文字提示“共 N 行结果”7OCR 识别局部同上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 / pdf5优化界面6添加文件开发doc(summary)打开文件夹File - Open Folder: cursor/RegPic打开终端View - TerminalNew Chat## 开发者角色以较专业的方式尝试一步步提问Cursor给出一步步的指导并辅助 Run 直接生成代码提问显示当前python版本$ python --versionPython 3.13.7提问显示当前uv版本如未检测到uv请直接安装并显示安装步骤$ uv --versionuv 0.8.13 (ede75fe62 2025-08-21)提问在当前文件夹下创建uv虚拟环境$ uv venvUsing CPython 3.13.7 interpreter at: C:\Python313\python.exeCreating virtual environment at: .venvActivate with: .venv\Scripts\activate提问激活当前venv环境并在terminal终端中显示当前venv环境$ .\.venv\Scripts\Activate.ps1提问当前环境下初始化项目$ uv init提问配置依赖库镜像文件 uv.toml加速下载url为“https://pypi.tuna.tsinghua.edu.cn/simple”# 未能理解提问输出结果无法应用参考AIGC生成式AI试用 39 -- 程序Python OCR-1-CSDN博客AIGC生成式AI试用 40 -- 程序Python OCR-2-CSDN博客Updating -- Python知识_from functiontool import reduce-CSDN博客