第一部分:项目启动和人工智能的使用
一直想开发一个处理PDF文件的小程序来解决实际使用中的问题,但是由于设计的技术比较多,很难在有限时间内完成。最近突然想使用GPT的辅助功能做一个尝试。python语言近几年用的比较少,对PyQt和PyPDF这些库的应用并不熟悉。因此,我决定利用人工智能(AI)的力量来弥补我的不足。AI技术,尤其是ChatGPT,为我提供了一个跳板,帮助我快速实现了软件的界面和基本功能。
在这个项目的早期阶段,AI的作用主要是提供代码建议和解决特定问题。例如,我询问AI如何使用PyQt创建用户界面,AI给出了详细的步骤和代码示例,这极大地简化了我的开发过程。同样,对于PDF处理,我向AI详细描述了我想要实现的功能,例如搜索和删除PDF中的水印。基于这些描述,AI生成了相关的代码片段,这些代码成为了项目的基石。
在这个阶段,AI的能力表现是非常惊人的,只要详细的描述对菜单栏工具栏主要的按钮与功能的要求,AI基本上可以一次性完全无误的输出整个的界面程序代码,为了增加难度,我在这个项目中提供了中英文界面实时翻译的功能要求,AI也都可以很快速的准确无误地实现这些功能。经过对布局功能排布和图标等要求的修改,最终生成的程序界面如下。
第二部分:AI的局限性与人类创造力的重要性
然而,在使用AI的过程中,我也意识到了它的局限性。AI的知识和能力是建立在预先训练的数据之上的。当面对创新或独特的问题时,AI可能无法提供有效的解决方案。在我们的项目中,AI提供的水印删除方法,虽然是基于已知的技术,但并没有真正触及问题的核心。
在这个阶段,AI体现出了它的局限性,首先,由于互联网上处理类似问题大多是基于pypdf2软件包,但是这个包自从2016年起已经不再维护了,AI并没有意识到这个包的过失性,而是仿照网络上现有的解决方案仍然用这样成就落实的过时的包,以及网络上已有的一些并不完美的思路和方案没有办法进行突破,并提出新的创造性的解决方案。因此在看到AI提出的使用pypdf2代码之后,我首先进行搜索,并且将这个包替换为pypdf,并建议AI按照新的包来重新生成代码,这部分工作ai完成的还是不错的。但是在核心功能,本项目的水印删除部分,无论怎么样提示AI只能采用已有的解决方案和思路,没有办法给出创新的真正解决问题的办法。
真正的突破仍然是由人类的思维和创造力实现的。在这个过程中,我意识到单纯的删除PDF中的对象或更改背景颜色并不能有效地移除水印。我使用AI列出了pdf文件的所有元素,从这些元素中找到新的规律,对传统的方法进行加强和完善:即识别PDF文件中重复出现的元素并将其删除。这种方法的创新之处在于它直接定位了重复的水印元素,而不是依赖于表面的图像处理。这一思路的灵感完全来自于人类的创造性思维,而非AI的数据驱动响应。
第三部分:AI在错误排查中的作用
尽管在创新方面有所局限,但AI在排查和解决编程错误方面表现出色。在开发过程中,我遇到了各种各样的编程问题和错误。每当这些问题出现时,我就向AI描述错误信息。AI通常能根据其知识库提供潜在的原因和解决方案。这种即时的反馈在很多情况下帮助我快速定位问题并找到解决办法。
然而,AI在这方面的帮助也有其局限性。当问题涉及复杂的逻辑或设计决策时,AI的回答有时可能显得片面或不够深入。在这些情况下,必须依靠自己的分析能力和理解来找到解决方案。这再次凸显了在解决复杂问题时人脑的重要性。
第四部分:项目进展和AI的辅助
随着项目的深入,我开始探索更复杂的功能,如PyQt界面的细节调整和PDF处理算法的优化。在这个阶段,AI的帮助仍然是不可或缺的。每当我对如何改进用户界面或优化算法有疑问时,AI总能给出有用的建议和代码片段。这些及时的帮助加速了开发过程,使我能够专注于更高层次的设计和创新。
在设计UI界面时,我详细描述了我想要的布局和功能,AI基于这些描述生成了PyQt代码。虽然这些代码需要进一步的调整和优化,但它们为我提供了一个坚实的起点。同样,在处理PDF水印的过程中,AI提供的代码帮助我理解了PyPDF库的工作原理,并指导我如何操作PDF文件中的对象。
第五部分:AI的辅助工具和资源搜索
在项目开发中,另一个AI展现出色的方面是提供工具和资源。无论是寻找特定的Python库、了解其使用方法,还是寻找解决特定问题的工具,AI都能快速给出答案。这不仅节省了我大量的搜索时间,而且还为我提供了许多我之前不知道的资源。
此外,AI在回答我的问题时往往会提供多种解决方案,这给了我更多的选择和灵活性。例如,在打包应用程序为可执行文件时,AI不仅提供了使用PyInstaller的方法,还介绍了其他如cx_Freeze的工具,以及如何在不同操作系统上构建应用程序。
在项目的最后阶段,我开始考虑如何发布和分享这个工具。AI建议我使用GitHub Actions自动化构建和发布过程,并提供了详细的步骤和配置说明。通过AI的帮助,我能够将我的应用程序打包为Windows和Linux下的可执行文件,并自动发布到GitHub的Release版本中。
结论:人脑与AI的协同作用
通过这个小项目的开发,我深刻体会到人脑与AI的协同作用的重要性。AI作为一个强大的工具,能够加速开发过程、提供丰富的资源和技术支持。然而,真正的创新和问题的核心解决方案仍然依赖于人类的创造力和思维。在未来的技术发展中,人类的创造力和AI的强大计算能力相结合,将会开辟出无限的可能性。 这个项目不仅是我个人技术成长的见证,也是人工智能在实际应用中潜力的展示。无论是对技术的好奇心还是对创新的渴望,都是推动我们前进的不竭动力。
项目仓库地址,如果可能,后续会在这个基础上为程序增加更多功能,也提供更多人与人工智能协同的经验与思考。