当前位置: 首页 > news >正文

AIGC(生成式AI)试用 38 -- 程序(Python + OCR)-1

个人理解:

  • 上下文很好,如果有反悔的操作,如何进行?
  • 一次性给出全部需求,还是先框架,然后一步步细化功能,补充细节?
    - 需求从模糊到清晰
    - 需求不断反复
  • 上下文的连贯性如何解决?
  • 只提需求,实现交给AI -- 要很清晰的了解需求,并能从给出的结果中不断的修正自己的需求点
  • 复杂需求一次成型不太可能,层层改善,不断完整细节 -- 先有架构,然后才是细节实现
  • 遗留:暂且实现一版,后续持续改进,用AI编码
    本计划一次性完成,在与AI的交互中反复变更需求,从GUI到功能细节实现(更深刻的理解需求是软件工程中的始点,也是最繁琐的阶段过程);
    AI在编码实现中的确可以提效(直接获取答案),但提交结果的验证、测试仍是一个持续的过程;
    在没有使用AI IDE开发平台,只借助AI工具情况下,与AI工具的磨合持续进行,如何更好的使用AI?
    - 细节是否可以用表格形式?如对象、属性、动作
    - 图像局部选择
    - 程序测试
    - AI编程的实现:需求 -- 大纲 -- 细节 -- 编码 -- 测试

目的:熟悉AI编码 + 完善程序OCR程序
AI工具:文心一言(百度),CSDN写作助手(CSDN),豆包(字节跳动),通义千问(阿里)

  • 开发需求
  • 界面设想
  • AI提问1(需求预研)
  • AI提问2(开发环境)
  • AI提问3(需求分解)
  • AI提问4(界面设计)
  • AI提问5(提问分解)
  • AI提问6(代码实现)
  • AI提问7(优化完善)
  • AI提问8(程序测试)

  • 开发需求:图片文字识别
    初步设想
    - 图形界面
    - python + OCR
      > Python311 IDLE + Tkinter + EasyOCR; AI工具
      > Python313(UV) + PyQT + PaddleOCR;AI工具
    - 支持多张图片(一张、多张、一个文件夹、pdf/word/excel文件)图片识别
    - 支持jpg, png, bmp图片格式
    - 文字识别结果输出方式:1)图片上显示;2)txt文件
  • 界面设想

  • AI提问1(需求预研)
    - AI工具有哪些
有哪些AI工具,所属公司及特点,使用表格形式输出,表头:工具名、所属公司、工具特点、是否免费
工具名所属公司工具特点是否免费
ChatGPTOpenAI%上下文理解与角色一致性突出,支持创意写作/代码生成/复杂推理,月活用户超3亿免费版可用(如ChatGPT 3.5无需登录),高级功能需付费
Deepseek深度求索数学推理与结构化数据处理专家,擅长解构复杂算法,支持超长文本处理API服务收费(输入tokens 0.5-4元/百万,输出16元/百万)
Kimi月之暗面超长文本处理能力达128k tokens,中国古典文学理解优势显著,支持多轮对话免费使用,国内直接可用,无需梯子
通义千问阿里云多模态理解能力突出,电商场景优化显著,支持产品图片生成文案/直播视频转带货脚本Qwen Code每日免费调用2000次
元宝腾讯垂直知识库支持(法律/医疗/金融),实时信息检索能力强,支持结构化报告生成基础版免费(含视频生成、基础剪辑);高级版需付费(支持专业特效、版权素材库)
Claude系列Anthropic严格遵循指令,伦理审查机制完善,支持网络安全报告/法律文件格式审查Claude Sonnet 4免费可用,登录claude.ai即可使用
文心一言百度知识增强大语言模型,支持对话互动/内容创作/跨语言翻译,日均调用量超10亿次全面免费,所有用户可体验最新模型及功能
Midjourney美国Midjourney艺术感图像生成领导者,支持风格迁移/超分辨率/艺术化编辑,Discord平台集成收费(官方$10/月起,中文版¥19.8/月起)
DALL-E 2OpenAI文本到图像生成系统,支持复杂场景构建/细节精准控制,商业应用广泛有安卓免费版,但可能有限制
Stable DiffusionStability AI开源图像生成工具,支持本地部署/自定义模型,隐私控制强,硬件要求较高提供500张免费使用额度,有效期90天
GitHub Copilot微软&OpenAI代码辅助生成工具,支持200+语言,自动补全/单元测试生成,企业级安全认证需确认(通常为付费服务,但可能有免费试用)
豆包MarsCode字节跳动AI原生IDE,支持项目级代码理解/Builder模式开发,中文语义理解准确率92%完全免费开放,提供云IDE及开发模板,支持GitHub仓库拉取
星火大模型科大讯飞语音识别与自然语言处理专家,支持教育/医疗/客服场景,多语种交互流畅Lite API永久免费;Pro/Max API低至0.21元/万tokens(1token≈1.5汉字)
盘古华为云企业级大模型,支持内容创作/自动翻译/智能对话,数据处理效率提升40%采用包周期/按需计费,涉及模型订阅、数据资源、训练及推理资源费用
FineChatBI
  • 帆软
对话式BI工具,支持自然语言转分析指令,实时数据洞察生成,决策响应时间缩短至分钟级提供免费试用,正式使用需一次性付费购买会员服务时长
TableauSalesforce数据可视化标杆,支持动态仪表盘/交互式分析,社区资源丰富,学习曲线平缓Public版完全免费;企业版Creator月费70美元,Explorer月费28美元
Power BI微软与Excel/Azure无缝集成,AI功能支持自动洞察/预测,中小企业首选有免费版(Power BI Desktop),付费版功能更全
剪映字节跳动视频编辑工具,支持一键口播剪辑/AI特效生成,适合短视频创作与直播场景免费使用,部分高级功能需付费

        - 支持Python的OCR库有哪些

支持Python的OCR库有哪些,使用表格形式输出,表头:库名、特点、是否免费
库名特点是否免费
Tesseract OCRGoogle开源引擎,支持100+种语言,离线运行,高度可配置(如PSM页面分割模式),中文识别准确率89.7%免费
EasyOCR深度学习驱动,支持83种语言实时切换,GPU加速处理速度提升300%,复杂排版文档识别F1值优于Tesseract免费
PaddleOCR百度开源,支持中英文多字体识别,移动端模型仅8.3MB,服务器端支持1000+字体,金融票据识别时延≤200ms免费
OpenCV计算机视觉基础库,提供图像预处理(灰度化、二值化、降噪)和文字区域检测功能,常与Tesseract结合使用免费
Keras-OCR基于Keras/TensorFlow的预训练模型,支持英文为主的多语言识别,API简洁易用,适合快速集成免费
OCRmyPDF专攻PDF处理,自动重建可搜索文本层,保留矢量元素,支持批量处理和PDF/UA无障碍格式免费
TrOCR基于Transformer的生成式模型,支持印刷/手写体识别,通过Hugging Face平台提供预训练模型免费
PyOCR封装Tesseract、CuneiForm等引擎,支持多种图像格式和语言,提供统一接口调用多引擎免费

        - Python图形开发工具有哪些

Python图形开发工具有哪些,使用表格形式输出,表头:工具名、特点、是否免费
工具名特点是否免费
TkinterPython标准库,跨平台,适合快速原型开发免费
PyQt功能强大,支持可视化设计,有GPL和商业许可GPL版本免费(需开源),商业版付费
wxPython跨平台,基于wxWidgets,LGPL许可免费
Kivy开源,支持多点触控和跨平台(含移动端)免费
Pygame游戏开发专用,支持图形与声音处理免费
PyQtGraph基于PyQt/NumPy,专注数据可视化免费
Matplotlib基础数据可视化库,支持多种图表类型免费
Seaborn统计图形专用,基于Matplotlib免费
Plotly交互式可视化,支持动态图表与Web嵌入免费版可用,商业版付费
Bokeh交互式Web可视化,支持实时数据更新免费
PySide2Qt的Python绑定,LGPL许可免费
DearPyGui现代GUI库,支持主题定制与跨平台免费
Streamlit快速构建数据应用,支持实时交互免费
Jupyter Notebook交互式计算环境,集成可视化功能免费
Dash构建Web应用,支持仪表板与交互式图表免费版可用,商业版付费
  • AI提问2(开发环境)
    - powereshell? CMD命令行直接解决 
    - UV安装 : pip intstalll uv
    - .venv初始化: uv init
    Prompt1:
    作为Python开发专家,开发 图片文字识别 图形界面工具,请给出至少两种开发环境推荐
    1)所需求Python版本 + 工具库
    2)说明推荐理由
    3)按以下格式输出
         - python版本
         - 工具库
         - 推荐理由

    方案一:轻量级本地化OCR工具(Tesseract + Tkinter)

    Python版本  Python 3.8+

    理由:兼容Tesseract和Tkinter,支持现代语法特性,性能稳定。

    工具库

    pytesseract(Tesseract OCR的Python封装)

    OpenCV(图像预处理)

    Pillow(图像格式转换)

    Tkinter(Python内置GUI库)

    numpy(数组操作)

    推荐理由

    优势:

    • 完全本地化运行,无需网络依赖,适合隐私敏感场景。

    • Tkinter是Python标准库,无需额外安装,开发快速。

    • Tesseract支持100+语言,可通过训练自定义模型提升特定场景识别率。

    适用场景

    • 个人或小型团队开发,需求简单(如单张图片识别、基础预处理)。

    • 资源受限环境(如旧电脑或嵌入式设备)。

    方案二:高性能+多API集成工具(PaddleOCR + PyQt5)

    Python版本  Python 3.9+

    理由:兼容PaddleOCR和PyQt5,支持类型注解和异步编程,提升代码可维护性。

    工具库

    PaddleOCR(百度开源的高精度OCR引擎)

    PyQt5(功能强大的GUI库)

    OpenCV(图像预处理)

    requests(调用第三方OCR API,如百度AI、阿里OCR)

    numpy(科学计算)

    推荐理由

    优势:

    • PaddleOCR支持中英文混合、表格识别、方向分类等高级功能,识别率优于Tesseract。

    • PyQt5提供丰富的控件和可视化设计工具(Qt Designer),适合开发专业级界面。

    • 可通过requests集成第三方API,扩展识别能力(如手写体、复杂排版)。

    适用场景:

    • 企业级应用,需支持高精度、多语言、复杂排版识别。

    • 需要快速开发功能丰富的界面(如批量处理、结果导出、历史记录)。

    Prompt2:
    请先指导安装python UV环境,然后给出开发工具:Python3.13,PaddleOCR,PyQt5,OpenCV,Pillow,numpy,requests 通过UV在Windows系统下安装部署虚拟环境的方法
    输出格式:
    1)工具名(备注官方地址,运行依赖环境)
    2)安装步骤
    3)环境验证方法

    1)工具名及运行依赖环境

    工具名:UV(Python环境管理工具)
    官方地址:https://astral.sh/uv/docs
    运行依赖环境:

    操作系统:Windows 10/11(64位) Python版本:3.13(需提前安装,官网:https://www.python.org/downloads/) PowerShell:5.1及以上版本(Windows自带) 网络环境:稳定网络连接(用于下载依赖包)

    2)安装步骤

    步骤1:安装UV工具

    以管理员身份运行PowerShell:

    • 按 Win + X,选择“Windows PowerShell(管理员)”。

    执行安装命令:

    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

    • 等待安装完成,提示“安装成功”后关闭PowerShell。

    步骤2:创建Python 3.13虚拟环境

    打开普通PowerShell(非管理员):

    • 按 Win + R,输入 powershell,回车。

    创建虚拟环境:

    uv venv .venv --python 3.13

    • 若系统未找到Python 3.13,需指定完整路径(如 C:\Python313\python.exe)。

    激活虚拟环境:

    .\.venv\Scripts\activate

    • 激活后,命令行提示符前会显示 (.venv)

    步骤3:安装依赖库

    配置国内镜像源(加速下载):

    • 在项目根目录创建 uv.toml 文件,内容如下:

      [[index]]
      url = "https://pypi.tuna.tsinghua.edu.cn/simple"
      default = true

    初始化项目,创建project.toml文件:

    uv init

    确认OS

    [tool.uv]

    platforms = ["win_amd64"]

    安装依赖库:

    uv add paddleocr pyqt5 opencv-python pillow numpy requests

    uv pip install pyqt5
    • 或手动指定版本(推荐):

      uv add paddleocr==2.9.0 pyqt5==5.15.10 opencv-python==4.10.0.84 pillow==10.4.0 numpy==1.27.0 requests==2.32.3

    同步依赖(确保版本一致):

    uv sync

    手动添加 uv pip install 的lib库到 dependencies:   "pyqt5>=5.15.11",

    3)环境验证方法

    验证Python环境

    python --version # 应输出Python 3.13.x

    验证PaddleOCR

    创建测试文件 test_ocr.py

    from paddleocr import PaddleOCR
    ocr = PaddleOCR(use_angle_cls=True, lang="ch")
    result = ocr.ocr("test.jpg", cls=True) # 需准备test.jpg文件
    print(f"识别结果数量: {len(result)}")

    运行测试:

    uv run python test_ocr.py

    • 预期输出:识别结果数量>0(无报错)。

    验证PyQt5

    创建测试文件 test_qt.py

    from PyQt5.QtWidgets import QApplication, QLabel
    app = QApplication([])
    label = QLabel("PyQt5运行正常")
    label.show()
    app.exec_()

    运行测试:

    uv run python test_qt.py

    • 预期输出:弹出窗口显示文字。

    验证OpenCV/Pillow/numpy

    创建测试文件 test_cv.py

    import cv2
    import numpy as np
    from PIL import Image

    img_cv = cv2.imread("test.jpg")
    print(f"OpenCV图片尺寸: {img_cv.shape}")

    img_pil = Image.open("test.jpg")


    print(f"Pillow图片格式: {img_pil.format}, 尺寸: {img_pil.size}")

    arr = np.array([1, 2, 3])
    print(f"NumPy数组形状: {arr.shape}")

    运行测试:

    uv run python test_cv.py

    • 预期输出:图片尺寸、格式、数组形状等信息。

    验证requests

    创建测试文件 test_req.py

    import requests
    response = requests.get("https://www.baidu.com")
    print(f"请求状态码: {response.status_code}")

    运行测试:

    uv run python test_req.py

    • 预期输出:状态码200。

    常见问题解决

    PaddleOCR报错 AttributeError: module 'paddle.fluid.core_noavx'

    • 原因:CPU不支持AVX指令集。

    • 解决方案:安装支持AVX的PaddlePaddle版本或从源码编译:

      uv add paddlepaddle==2.9.0 --force-reinstall

    依赖冲突:

    • 解决方案:使用 uv lock 生成锁文件,确保环境一致性:

      uv lock

    下载慢:

    • 解决方案:确认 uv.toml 中已配置国内镜像源(如清华源)。

    总结

    优势:UV通过单一工具完成环境创建、依赖管理和运行,避免传统venv+pip+conda混合使用的复杂性。 适用场景:需要快速部署标准化开发环境的团队,或对环境一致性要求高的项目(如CI/CD流水线)。

  • AI提问3(需求分解)
    图片输入 --> 文字识别(语言、类型、区域) --> 结果处理(速度、准确率、资源占用)与输出

    Prompt1:
    请根据原始需求 “图片文字识别”,分解并补充需求细节,并预期可能的开发问题

    需求分解与补充细节

    1. 功能需求

    图片输入

    • 支持多种常见图片格式,如 JPEG、PNG、BMP 等。

    • 允许从本地文件系统选择图片,也支持通过拍照(针对移动端应用)实时获取图片。

    • 能够对输入图片进行基本的预览,让用户确认图片内容。

    文字识别

    • 识别语言:支持多种语言,包括但不限于中文、英文、日文、韩文等常见语言,以满足不同用户群体的需求。

    • 识别类型

      • 印刷体文字识别:能够准确识别书籍、报纸、杂志等印刷品上的文字。

      • 手写体文字识别(可选):对于清晰的手写文字有一定的识别能力,可设定不同的手写风格识别模式,如规整手写、随意手写等。

    • 识别区域

      • 全图识别:对整个输入图片进行文字识别。

      • 区域选择识别:允许用户在图片上手动框选特定区域进行文字识别,提高识别效率和准确性,尤其适用于图片中包含多个不相关文字区域的情况。

    • 识别结果展示

      • 以文本形式展示识别出的文字内容,提供清晰的排版,保持与原图片中文字的段落和行结构一致。

      • 显示识别结果的置信度,让用户了解每个识别字符或单词的准确程度,对于置信度较低的部分,可以用特殊颜色或标记进行提示。

    结果处理与输出

    • 编辑功能:允许用户对识别出的文字进行编辑,如修改、删除、添加文字等操作,以满足用户对识别结果的修正需求。

    • 输出格式:支持多种输出格式,如纯文本文件(TXT)、富文本格式(RTF)、Word 文档(DOCX)等,方便用户在不同场景下使用识别结果。

    • 分享功能:提供将识别结果分享到其他应用程序的功能,如通过邮件、社交媒体平台等分享,方便用户与他人交流和共享信息。

    2. 性能需求

    识别速度:在保证识别准确率的前提下,尽量提高识别速度。对于普通大小的图片(如几 MB 以内),应在几秒内完成识别并展示结果;对于较大图片,也应控制在合理的时间范围内,避免用户长时间等待。
    准确率:根据不同的文字类型和语言,设定相应的准确率目标。例如,对于印刷体中文和英文,整体准确率应达到 95%以上;对于手写体文字,准确率目标可根据手写清晰度和风格适当调整,但至少应保证在 80%以上(针对清晰可辨的手写内容)。
    资源占用:在运行过程中,对系统资源的占用应保持在合理水平,避免因程序运行导致设备卡顿或内存不足等问题。特别是在移动设备上,要充分考虑电池消耗和内存使用情况。
     

    3. 用户体验需求

    界面设计:设计简洁、直观、易用的用户界面,操作流程清晰明了。主要功能按钮应布局合理,方便用户快速找到并使用。例如,将图片输入按钮、识别按钮、结果展示区域等核心元素放置在显眼位置。
    操作反馈:在用户进行各项操作时,及时给予反馈。例如,当用户选择图片后,显示图片加载进度;在识别过程中,显示识别进度条,让用户了解当前操作的状态。
    帮助与提示:提供详细的帮助文档或操作提示,指导用户如何使用图片文字识别功能。对于一些高级功能或特殊操作,可以通过弹出窗口、提示框等形式进行说明,帮助用户更好地掌握使用方法。
     

    4. 安全与隐私需求

    数据安全:确保用户上传的图片和识别结果数据在传输和存储过程中的安全性。采用加密技术对数据进行加密处理,防止数据泄露和被恶意篡改。
    私保护:明确告知用户程序对图片和文字数据的处理方式和用途,遵守相关隐私政策和法律法规。未经用户明确同意,不得将用户数据分享给第三方。
     

    预期可能的开发问题

    1. 技术实现问题

    文字识别算法选择与优化

    • 市场上存在多种文字识别算法和开源库,如 Tesseract OCR、百度 OCR、腾讯 OCR 等。选择合适的算法需要考虑识别准确率、支持语言、运行效率等多方面因素。不同算法在不同场景下的表现可能差异较大,需要进行大量的测试和比较,以确定最适合项目需求的算法。

    • 对于选定的算法,可能还需要进行进一步的优化和定制,以提高在特定类型图片(如低分辨率、模糊、有噪声的图片)上的识别准确率。这可能需要深入理解算法原理,进行参数调整和模型训练,对开发团队的技术能力要求较高。

    多语言支持

    • 实现多种语言的文字识别需要处理不同语言的字符集、语法结构和书写特点。不同语言的文字识别模型可能需要单独训练和优化,增加了开发的复杂度和工作量。

    • 某些小众语言可能缺乏足够的训练数据,导致识别准确率不高。如何获取和处理这些语言的训练数据,以及如何提高在数据稀缺情况下的识别性能,是一个具有挑战性的问题。

    手写体识别

    • 手写体文字的风格多样,每个人的书写习惯不同,导致手写体识别难度较大。与印刷体相比,手写体的字符形状、大小、间距等变化更大,需要更复杂的算法和模型来处理。

    • 即使对于同一手写风格,不同人的书写质量也有所差异,如字迹潦草、连笔等情况,进一步增加了识别的难度。如何提高手写体识别在不同书写质量下的鲁棒性,是开发过程中需要解决的关键问题之一。

    2. 性能优化问题

    大图片处理

    • 当处理较大尺寸的图片时,可能会导致内存占用过高和识别速度变慢。需要对图片进行适当的压缩和预处理,以减少数据量和计算复杂度。但压缩过度可能会影响文字的清晰度,进而降低识别准确率,因此需要在压缩比例和识别质量之间找到平衡。

    • 对于大图片的识别,可能需要采用分块处理或并行计算的方式,以提高处理效率。但这需要额外的算法设计和编程实现,增加了开发的难度。

    多平台适配

    • 如果需要在多个平台(如 Windows、Mac OS、iOS、Android)上运行图片文字识别应用,需要考虑不同平台的硬件性能、操作系统特性和开发环境差异。不同平台对图片处理、算法运行和用户界面设计的支持方式可能不同,需要进行针对性的优化和适配工作。

    • 例如,移动设备的硬件资源相对有限,对性能的要求更为苛刻。如何在保证识别准确率的前提下,优化应用在移动设备上的运行效率,减少电池消耗和内存占用,是一个需要重点关注的问题。

    3. 用户体验问题

    界面交互设计

    • 设计一个满足不同用户群体需求的直观、易用的界面并不容易。需要考虑用户的使用习惯、操作流程的合理性以及界面的美观性。如果界面设计过于复杂或操作流程不清晰,可能会导致用户使用困难,降低用户体验。

    • 不同设备和屏幕尺寸下的界面适配也是一个挑战。需要确保应用在各种设备上都能正常显示和操作,避免出现界面元素错位、显示不全等问题。

    操作反馈与提示

    • 提供及时、准确的操作反馈对于用户体验至关重要。如果反馈不及时或不清晰,用户可能会对操作结果产生困惑,甚至误操作。例如,在识别过程中,如果进度条显示不准确或没有及时更新,用户可能无法了解当前操作的状态。

    • 帮助与提示信息的编写需要简洁明了,易于理解。如果提示信息过于专业或复杂,普通用户可能难以理解,无法有效解决问题。

    4. 安全与隐私问题

    数据加密与传输安全

    • 实现图片和文字数据在传输和存储过程中的加密需要选择合适的加密算法和安全协议。不同的加密算法具有不同的安全级别和性能特点,需要根据项目需求进行选择。同时,要确保加密过程不会对系统性能产生过大影响。

    • 在网络传输过程中,可能会面临各种安全威胁,如中间人攻击、数据窃取等。需要采取有效的安全措施,如使用 SSL/TLS 协议进行加密传输,防止数据在传输过程中被泄露或篡改。

    隐私政策与合规性

    • 制定明确的隐私政策,告知用户程序对数据的处理方式和用途,需要符合相关法律法规的要求。不同国家和地区对隐私保护的法律法规可能不同,需要确保程序的隐私政策符合当地的法律要求,避免因隐私合规问题引发法律风险。

    • 在获取用户数据时,必须获得用户的明确同意。如何设计合理的用户授权流程,确保用户清楚了解数据的使用情况并自愿授权,是一个需要认真考虑的问题。

    以上就是对“图片文字识别”需求的分解、补充细节以及预期可能开发问题的分析,在实际开发过程中,还需要根据具体情况进一步细化和调整。

  • AI提问4(界面设计)
    并未达到预期的图形化展示,借助文字描述也可以简化GUI图形界面的设计规则。
    豆包给出的简图大致能说明整个GUI界面的布局和基本功能操作。

    Prompt1:
    请根据 “图片文字识别”需求,理解需求细节,设计并绘制一幅中文GUI界面原型

    >> 豆包

    >> 文心一言

    以下为你设计一个基于“图片文字识别”需求的 GUI 界面原型,并详细描述其中各元素用中文显示的情况,你可以根据这个描述使用专业原型设计工具(如 Axure、墨刀等)来绘制,或者简单手绘呈现。


    整体布局与风格

    界面采用简洁、直观的设计风格,以白色为主色调,搭配浅灰色边框和蓝色操作按钮,给人清晰、专业的感觉。整个界面分为几个主要区域:顶部标题栏、左侧功能区、中间图片显示与操作区、右侧识别结果展示区以及底部状态栏。各区域详细描述

    顶部标题栏

    内容:显示“图片文字识别系统”,字体较大且加粗,位于标题栏正中央,颜色为深蓝色,突出显示系统名称。 作用:明确告知用户当前使用的系统功能。

    左侧功能区

    图片上传按钮:

    • 形状:矩形按钮,带有向上箭头图标。

    • 文字:“上传图片”,黑色字体,位于按钮中央。

    • 大小:适中,方便用户点击。

    • 作用:点击后弹出文件选择窗口,用户可从中选择本地图片进行上传。

    拍照按钮(可选,针对移动端或支持拍照的设备):

    • 形状:矩形按钮,带有相机图标。

    • 文字:“拍照识别”,黑色字体,位于按钮中央。

    • 大小:与上传图片按钮大小相近。

    • 作用:点击后调用设备摄像头,实时拍摄图片进行识别。

    语言选择下拉框:

    • 形状:矩形下拉框。

    • 文字:默认显示“中文”,点击下拉框后显示多种语言选项,如“英文”“日文”“韩文”等,黑色字体。

    • 大小:宽度适中,能完整显示语言选项。

    • 作用:用户可选择需要识别的文字语言。

    识别类型选择单选按钮:

    • 形状:圆形单选按钮,旁边有文字说明。

    • 文字:两个单选按钮分别对应“印刷体识别”和“手写体识别”,黑色字体。

    • 大小:单选按钮较小,文字说明适中。

    • 作用:用户可根据图片中文字类型选择相应识别模式。

    识别区域选择按钮:

    • 形状:矩形按钮。

    • 文字:“选择识别区域”,黑色字体,位于按钮中央。

    • 大小:与上传图片按钮类似。

    • 作用:点击后可在中间图片显示区手动框选特定区域进行文字识别。

    中间图片显示与操作区

    图片显示框:

    • 形状:矩形框,带有浅灰色边框。

    • 内容:显示用户上传或拍摄的图片,图片自适应显示在框内,保持原始比例。

    • 大小:占据界面中间大部分区域,方便用户查看图片细节。

    • 作用:展示待识别的图片内容。

    图片操作按钮:

    • 放大按钮:

      • 形状:矩形按钮,带有放大镜加号图标。

      • 文字:“放大”,黑色字体,位于按钮中央。

      • 大小:较小。

      • 作用:点击后放大图片显示,方便查看细节。

    • 缩小按钮:

      • 形状:矩形按钮,带有放大镜减号图标。

      • 文字:“缩小”,黑色字体,位于按钮中央。

      • 大小:与放大按钮相同。

      • 作用:点击后缩小图片显示。

    • 适应屏幕按钮:

      • 形状:矩形按钮,带有适应屏幕图标。

      • 文字:“适应屏幕”,黑色字体,位于按钮中央。

      • 大小:与上述按钮一致。

      • 作用:点击后图片自动适应显示框大小。

    右侧识别结果展示区

    识别结果文本框:

    • 形状:矩形文本框,带有浅灰色边框,可滚动显示内容。

    • 内容:显示识别出的文字内容,黑色字体,保持与原图片文字相似的段落和行结构。

    • 大小:占据右侧大部分区域,高度可根据内容自动调整。

    • 作用:展示文字识别结果。

    置信度显示:

    • 形状:在识别结果文本框下方,以条形图或数字形式展示。

    • 文字:每个识别字符或单词旁边显示其置信度数值,如“95%”,黑色字体;条形图以不同颜色(如绿色表示高置信度,黄色表示中等置信度,红色表示低置信度)直观展示。

    • 大小:条形图宽度适中,数值字体较小但清晰可见。

    • 作用:让用户了解识别结果的准确程度。

    编辑按钮:

    • 形状:矩形按钮,带有铅笔图标。

    • 文字:“编辑结果”,黑色字体,位于按钮中央。

    • 大小:与左侧功能区按钮大小相近。

    • 作用:点击后进入编辑模式,用户可对识别结果进行修改、删除、添加文字等操作。

    输出格式选择下拉框:

    • 形状:矩形下拉框。

    • 文字:默认显示“TXT 格式”,点击下拉框后显示多种输出格式选项,如“RTF 格式”“DOCX 格式”等,黑色字体。

    • 大小:与语言选择下拉框类似。

    • 作用:用户可选择识别结果的输出格式。

    输出按钮:

    • 形状:矩形按钮,带有下载图标。

    • 文字:“输出结果”,黑色字体,位于按钮中央。

    • 大小:与上述按钮一致。

    • 作用:点击后将识别结果以选定的格式输出到本地。

    分享按钮:

    • 形状:矩形按钮,带有分享图标。

    • 文字:“分享结果”,黑色字体,位于按钮中央。

    • 大小:与输出按钮相同。

    • 作用:点击后弹出分享窗口,用户可选择将识别结果分享到邮件、社交媒体平台等。

    底部状态栏

    内容:显示系统状态信息,如“就绪”“识别中”“处理完成”等,黑色字体,位于状态栏中央。 作用:让用户了解系统当前的工作状态。

    >> 重新按文字描述,绘制GUI界面

  • AI提问5(提问分解)
    基于 AI提问3 / AI提问4 结果,整理生成提问
    1)需求分解/分析
    2)GUI界面生成

    需求分解/分析

    功能需求

    - 图片输入

      > 支持常见图片格式: JPEG、PNG、BMP

      > 支持一张、多张(文件夹)、文件(pdf/word/excel)中图片识别

      > 图片来源:本地文件、外设输入

      > 图片类型:标准图片、有损图片

      > 提供原如图片预览

    - 文字识别

      > 语言类型:中文、英文、日文、韩文

      > 文字类型:印刷体、手写体

      > 识别区域:全图、选择区域

    - 文字输出

      > 输出位置:图片上、独立文本

      > 输出格式:文字布局结构与图片保持一致

      > 支持文字编辑

      > 输出文件:图片名_re + 原图片类型 / txt

    非功能需求

    - 性能需求

      > 识别速度:

      > 准确率:标准图片 > 90%;非标准图片 > 80%

      > 资源占用:利用CPU,普通办公用PC可适用

    - 用户UX:简洁、直观、易用

    GUI界面设计
    GUI分为 4 部分:顶部标题栏、上部功能区、中间图片加载及文字显示区、底部状态显示区。

    - 顶部标题栏:标题“图片文字识别系统”,黑色,粗体,12号,

    - 上部功能区包括:“选择图片” 圆角按钮(宽20,底色淡蓝)、图片文件路径文本框(不可编辑)、“选择区域” 圆角按钮(宽15)、”缩放“ 圆角按钮(宽15)、“文编辑” 圆角按钮、“保存格式” 下拉框(图片、Txt、图片&Txt)、”保存文字” 圆角按钮(宽20,底色淡蓝)

    - 中间:  左侧,原始图片显示 区域;中间,分隔线,可调整左右区域大小;右侧 图片文字识别显示 区域

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

  • AI提问6(代码实现)
    - GUI界面

    Prompt 1:
    作为python专家,请使用python和QT5实现以下需求
    GUI分为 4 部分:顶部标题栏、上部功能区、中间图片加载及文字显示区、底部状态显示区。

    - 顶部标题栏:标题“图片文字识别系统”,黑色,粗体,12号,

    - 上部功能区包括:“选择图片” 圆角按钮(宽200,底色淡蓝)、图片文件路径文本框(不可编辑)、“选择区域” 圆角按钮(宽150)、”缩放“ 圆角按钮(宽150)、“文字编辑” 圆角按钮(宽150)、“开始识别” 圆角按钮(宽200,底色淡蓝)、“保存格式” 下拉框(图片、Txt、图片&Txt)、”保存文字” 圆角按钮(宽200,底色淡蓝)

    - 中间:  左侧,原始图片显示 区域;中间,分隔线,可调整左右区域大小;右侧 图片文字识别显示 区域

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

    分析:
    1)界面画的差了点:按钮的高度、宽度;布局layout需要重新考虑;
    2)文心一言生成时,因为未能在python+QT5环境下成功执行代码(尝试运行代码时遇到了ModuleNotFoundError),同时给出了python + PySide2 / python + tkinter 多种方案

    3)思考过程的代码(有尝试执行过程,因此除静态界面外尝试给出各组件的功能反馈) 反而 比最终提交的代码质量更符合要求

    Prompt n:
    作为python专家,请使用python和QT5实现以下需求
    GUI分为 4 部分:顶部标题栏、上部功能区、中间图片加载及文字显示区、底部状态显示区。

    - 顶部标题栏:标题“图片文字识别系统”,黑色,粗体,12号,

    - 上部功能区:
      1) “选择图片” 圆角按钮(宽200,底色淡蓝)
      2) 图片文件路径文本框(不可编辑)
      3) “选择区域” 圆角按钮(宽150)
      4) ”缩放“ 圆角按钮(宽150)
      5) “文字编辑” 圆角按钮(宽150)
      6) “开始识别” 圆角按钮(宽200,底色淡蓝)
      7) “保存格式” 下拉框(图片、Txt、图片&Txt)
      8) ”保存文字” 圆角按钮(宽200,底色淡蓝)

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

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

    >> GUI设计

    >> 分析过程代码呈现(微调)

    分析:
    1)Button列表的使用,使得 输入框与按钮 的位置显示与需求不一致
    2)Promp改进
         - 标题栏不需要
         - 固定窗体大小,最大化窗体不需要 800*600
         - 设定图像显示框大小

    - 功能实现
      以GUI界面生成提示词为基础,增加界面对象功能描述提示,实现完整程序功能需求

    Prompt 1:
    作为python专家,请使用python、paddleocr和pyqt5实现以下GUI程序功能

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

    > 上部功能区(对象、属性、行为Action):
      1) “选择图片” 圆角按钮(宽200,底色淡蓝)
          点击“选择图片”后,显示图片文件选择框,可选图片类型: jpg, bmp, png
      2) 图片文件路径文本框(不可编辑)
          点击“选择图片”后,显示图片文件路径及文件名
      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)

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

    分析:
    1) paddleocr 错写为 paddle,实际代码中使用了错误的  import paddle

    Prompt N:

    作为python专家,请使用python、paddleocr和pyqt5实现以下GUI程序功能

    - 系统名称:“图片文字识别系统”
    - 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)

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

  • AI提问7(优化完善)
    - 初始界面大小、边框、图标

    # QLabel, QLineEdit(单行), QTextEdit(多行)
    self.recognized_text_label = QTextEdit() 
    self.recognized_text_label.setFixedSize(850, 1100)self.recognized_text_label.setStyleSheet("border: 1px solid black; padding: 5px;")
    # set alignment
    self.recognized_text_label.setAlignment(Qt.AlignLeft | Qt.AlignTop)

    - 文件名中有中文

    from paddleocr import PaddleOCR
    import cv2
    import numpy as npocr = PaddleOCR(use_angle_cls=True, lang='ch')
    img_data = np.fromfile(self.image_path, dtype=np.uint8)  
    img = cv2.imdecode(img_data, cv2.IMREAD_COLOR) result = ocr.ocr(img)

    - 图片处理
      > 旋转

    # 右旋
    self.rotation_angle = (self.rotation_angle + 90) % 360"""应用旋转变换"""
    if not self.original_pixmap:return# 创建旋转变换矩阵
    transform = QTransform()
    transformed = self.original_pixmap.transformed(transform.rotate(self.rotation_angle),Qt.SmoothTransformation
    )# 显示旋转后的图片
    self.original_image_label.setPixmap(transformed)
    

      > 缩放

    # 计算缩放后的尺寸
    scaled_width = int(self.original_image_label.width() * self.zoom_factor / 100)
    scaled_height = int(self.original_image_label.height() * self.zoom_factor / 100)# 保持宽高比进行缩放
    scaled_pixmap = self.original_pixmap.scaled(scaled_width, scaled_height,Qt.KeepAspectRatio,Qt.SmoothTransformation
    )# 显示图片
    self.original_image_label.setPixmap(scaled_pixmap)        
    

  • AI提问8(程序测试) -- 程序实现过程仍待改进,待后续

参考:

  • python OCR识别验证码
  • Python easyOCR图像文本提取 初识
  • AI: 文心一言、豆包
http://www.dtcms.com/a/532174.html

相关文章:

  • s001网站建设设计微信营销网络营销方式
  • #PCIE#《PCIE P2P 传输那点事儿》
  • HTTP | 跨域 - 知识点总结
  • 解决[PM2][ERROR] Script not found: D:\projects\xxx\start
  • 开发一款连接带有GEM/SECS协议软件的设备(一)
  • 大连微信网站开发app软件开发培训班
  • 同仁微网站建设工作室微信辅助网站制作
  • FFmpeg 基本数据结构 AVPacket分析
  • Linux at命令详解:轻松调度延迟任务
  • 线程停止、休眠、礼让、强制执行、观测线程状态
  • 复盘|嵌入式Linux驱动开发之I2C子系统
  • AI Agent常用的RAG有哪些种,分别适用于什么情况
  • 对中兴光猫zteOnu.exe项目的简单分析(提供下载地址)
  • 有没有专门做中考卷子的网站网站建设培训要多久
  • 做网站图片用什么格式最好个人网站备案能做宣传用么
  • JAVA1026 方法;类:抽象类、抽象类继承;接口、接口继承 Linux:Mysql
  • 密码学系列 - 零知识证明(ZKP) - NTT与MSM的总结
  • 《解决界面交互痛点:WaterFlow 瀑布流、双层嵌套滚动、键盘避让与跨 Ability 跳转实践》
  • 网页设计建立站点步骤做网站的广告词
  • Spring Boot3零基础教程,生命周期启动加载机制,笔记64
  • StarGantt在线甘特图最新版本评测
  • 43.渗透-Kali Linux-工具-Ettercap(dns欺骗)
  • 详解C++中的迭代器
  • 区块链论文速读 CCF A--USENIX Security 2025(2)
  • 基于区块链的新能源管理平台的设计与实现(源码+文档)
  • 2025年10月26日 AI大事件
  • 企业建站个人建站源码沧州专业网站建设公司
  • 基于springboot的电影评论网站系统设计与实现
  • 1.2.1.3 大数据方法论与实践指南-一种跨团队业务结算方式探索
  • 西安地产网站建设百度手机管家