今天下午尝试了下与ChatGPt结对编程,中间最耗时的万万没想到是OCR接口的申请与后续异常数据的处理。特将完成过程记录于此,以备后续不时之需。
缘起
事情的起因还得追溯到今天取回的一张超声心动图的报告。因为某些原因,近半年来几乎每个月都会做一次超声心动的检查。
这个检查有个特点,不仅不同医院的报告差距非常大,就连同一个医院,不同医生做的结果会有细微的差别。
超声心动图,来源丁香园网站
考虑到目前手头已经有了6份报告,各份报告上的有着类似的指标,为了更好的观察各个指标随时间的变化,便有了将报告结构化的想法。
问题描述与解决方法
结合上面的场景,问题可以抽象为:给定一个纸质文件,如何将纸质文件的内容结构化。
上述问题的解决步骤也很直观:
- 纸质文件转换为图片
- 图片内容转换为文字(OCR)
- 文字内容结构化(信息抽取)
有了上述问题分解的流程,具体实施步骤就比较直观了。
纸质文件转换为图片
手机拍照即可
图片内容转换为文字(OCR)
这一步,便是用了chatGPT进行结对编程,因为对目前市面上的OCR产品不太熟悉,第一时间便想到询问ChatGPT相关的知识。
下面几张图片便是具体的过程:
OCR免费接口
OCR接口对中文的支持程度
如何在google云服务上创建应用
ChatGPT倒是爽快,直接给出了调用相关API的代码和申请相关API权限的步骤。万万没想到,真正的工作量现在才开始。
按照给出的API申请步骤,我尝试申请了Google的OCR服务,一步步设置好之后,运行给出的代码时,提示说需要绑定信用卡。。。而且google cloud貌似不能绑定国内的信用卡。。。然后利用google云OCR的方法就僵到了这一步。。。
那就再问问ChatGPT国内有什么好用的并且可以免费试用的OCR接口,他给出了百度、腾讯、阿里云、华为、讯飞的OCR。
中文OCR接口
中文OCR效果对比,仅供参考
考虑到自己已经有了百度云和阿里云的账号,不需要再进行注册,就优先使用这两家的服务。万万没想到,这里也遇到了一个坑,百度云的相关链接竟然挂掉了。。。
百度云无法访问
那只有从阿里云这里开始了。好在阿里云的文档相当详细,按照步骤操作后,终于完成了API的试用申请。虽然ChatGPT在询问下也给出了使用阿里云API的相关代码,但是貌似接口版本有更新,这里直接参考官网的即可。
并且,阿里云的服务接口报错后的原因查找也相当方便,有一个专门的页面,输入ResponseID后,就可以查找到相应的问题。
阿里云调试信息
文字内容结构化(信息抽取)
文字内容结构化就直接借助ChatGPT的结构化能力了,具体其实分成了两个步骤:
- 获取需要结构化的属性名称,类似结构化数据库Mysql的列名
- 获取属性对应的值和单位
然后直接调用OpenAI的Chat相关接口即可。这里我把我使用的提示词发出来供大家参考。
# 获取属性名称的提示词
你现在是一个结构化文本解析器
你的任务是将下面文字中的可以结构化的信息进行结构化,结构化结果存储在表格中
表格有3列,分别为属性名称、属性值、单位
你要尽可能多的输出表格的行
# 获取值和单位的提示词
你现在是一个结构化文本解析器
你的任务是将下面文字中提取属性的值和单位,并将结果存储在字典中
字典的key为属性名称,value为值与单位组成的列表
提取的属性有:属性0,属性1,属性2...
在获得结构化结果后,另外一件耗时较长的就是对识别结果的清洗和抽样验证了。因为图片拍摄的问题、OCR识别结果的问题、结构化识别的问题逐步的累积,导致最终结果可能会有问题,需要针对具体情况进行处理,因此这一步也花了很长的时间。
经过清洗后的数据,我这里使用了pandas将结构化的结果存储为csv,实现了对各个指标随时间变化进行观察的目的。
总结
虽然上面的例子非常简陋,完全不能说是一个工具,缺少便捷的交互。
但通过这个简单的例子可以看出,对于一个实际问题来说,ChatGPT等大模型确实是可以帮助我们提效。
只是整个问题的分解,还是需要通过人工来解决。并且分解后的问题越纯粹、越明确、越简单,ChatGPT可以处理的相当好。
从这一点上看,正如大多数人所想象的那样,大模型们存在的主要作用并不是要对现有工作内容的完全替代,而是一种提效的手段。
相信在最近的几个月中,在我们日常生活中的某些方面,一定会有一些基于大模型能力的提效工具出现,来改善我们的工作效率。
本文正在参加人工智能创作者扶持计划