计算思维与科学前沿项目(2)
一.项目进程
1. 在本地运行印刷体识别框架
·获取试用密钥
·下载代码,替换密钥
·下载图源运行程序
·运行结果:

2. 在本地运行关键词提取框架
·获取试用密钥和终结点地址
·替换密钥和注册区域,首字母大写
·在main函数中添加下面的语句,防止运行结束后闪退:
·运行结果:

3. 整合程序
·将关键词提取的代码复制到识别手写体的程序中,安装所需包,合并main函数代码,删除情绪识别和语言识别部分
·运行成功后,对图片中提取出的contentString字符串进行分割,提取出语言和文本,此处为运行方便仅用英文海报进行测试。
·将语言存入字符串language以便自动识别,而由于文本为单个词语形式,需将其分别提取后串联成新的文本字符串poster。
·将language和poster作为参数进行关键词提取。
·运行结果:

4. 改为窗体应用
·将控制台程序代码移植进窗体,对输入、显示等语句进行修改,输出信息容器改为TextBox,保留关键代码。
·运行成功后,改进界面设计,增加openFileDialog用于选择文件,加入滚动条。
二.最终功能演示

图1 程序初始界面

图2 文件选择界面(点击“浏览”)按钮之后

图3 选择海报之后
三.遇到的困难
1. 控制台程序
第一个困难是将两个程序整合的时候需要考虑如何将手写体识别的结果作为参数进行关键词提取,两个main函数合并时需要考虑代码位置,之前为了运行关键词提取,从整合程序中学到了用Enter保持命令行界面的方法,通过打印出的结果分析出识别结果应该出现的位置,但函数不能直接调用,需要全局变量作为载体。
其次是最重要的部分,即字符串分割和文本的提取。起初我们用英文海报进行测试,语言一栏是“en”,但海报其实分很多种语言,考虑到识别程序可以智能识别海报的语言,于是我们想到可以利用识别出的语言作为参数,不需要再去考虑不同语言的问题。然而第一个框架的识别结果是一个比较复杂的字符串,所以我们对字符串进行了正则分割,语言的问题解决了,但由于文本并不像语言那样连续出现,而是一个词一个词分开的,我们只能分析每个单词出现的规律,不断改进分割方法,最终能够将一个完整的文本字符串提取出来。
2. 窗体程序
遇到的困难首先是在界面设计方面。一开始我们设计的界面虽然“功能够用”,但使用起来还是有很多不便:比如图片文件位置只能由用户手工输入,不能在程序中选择;输出信息显示在“标签”控件中,不能翻页。为此,我们改进了界面设计,增加了一个openFileDialog用于选择文件,并把输出信息的容器改为一个多行的TextBox,并加入滚动条。
第二个困难便是API的调用。由于程序中所用到的Azure API的调用方式各有不同,因此想正确使用这些功能便需要下很大功夫。我们结合网上的说明文档和示例程序,在经过研读、修改和调试之后,得到了比较理想的结果。
第三个困难是对输出结果的进一步分析。不同的海报中,由于文字的清晰度、角度等不同,得到的识别结果质量也会有差别。这需要在有大量数据集的基础上,进一步训练并形成新的模型。由于这一环节需要大量的工作,因而这一步并没有得到很好地实现。
四.对AI工具的反馈
在做程序的时候感受到了微软AI框架的强大,使用起来很方便,并且可以较为自由地修改代码,但由于初次接触AI,对C#不甚熟悉,我们目前能够实现的只是用网络上提供的软件训练最基本的模型,无法较好地训练自己的新模型。
五.体会与感悟
通过课程学习和项目开发实践,我们对人工智能技术及其常见应用有了初步的了解,提升了团队协作开发的能力,更进一步地激发了我们对前沿技术的学习、研究兴趣。诚然,在开发过程中,遇到的困难都是不可避免的;我们的团队成员则通过分工合作+探讨交流的形式,面对问题不慌不乱,尽力着手去解决,而这样的能力正是在步入工作岗位之后所必要的。
六.最终贡献分
- 张于舒晴:22
- 彭玉钊:21
- 陈翔:19
- 王少崎:18

浙公网安备 33010602011771号