梗图搜索神器来了!还能搜视频 检索结果秒出(组图)

科技 / 量子位 / 阅读 31181 / 2023-01-22T17:45:24Z
重度互联网爱好者们福利来了!

你是否遇到过这种情况:一个梗图寻遍全网都还没找到。

现在外网一位小哥搞出了一个互联网规模的Meme搜索引擎,库里有近两千万个梗图,涵盖各种小众文化。

检索关键词,或者上传相似图片,结果就能秒出!

若遇到Meme库里没有的梗图,还可共享上传。



网友六年都没找到的梗图,在这个小哥的网站上2分钟就找到了。



然鹅这样一个秒秒钟出梗图的背后的装置确实酱婶儿的:

(这不会有点太简陋了吧)



这时候可能就有盆友好奇,这个粗糙的装置是如何做到快速检索梗图的?

那不妨一起来看看这个“Meme搜索引擎”是如何搭建的~

灵感来自iPhone图片识别

要编写一个Meme搜索引擎,最重要也是最先面临的一个问题就是:如何准确识别梗图中的文字信息?

用专业一点的话来讲就是:如何拥有一个可伸缩的OCR(光学字符识别 )?

OCR的解决方案倒是有现成的,不过现有的要么就是遇到比较抽象的梗图识别效果不太好,要么就是太贵。

举个简单的栗子



,比如说用Tesseract OCR来提取图像中的文字,测试时,只能用非常标准的字体和配色方案识别Meme图,不然的话就会出现下面这种情况。

这是原图:



这是识别出来的文字:

30 BLUE man41;? S4-5?’flew/ — V [IL ‘ . “,2; g” .’Sj /B”f;T”EArmDand [red] mvslmunlm: sawmills

emmmmmm

不过灵感很快就来了,小哥偶然间在iPhone给别人发一个验证码图片时。

这是验证码图片:



这是复制过来的文字:



并且iPhone的这个功能已经在iOS Vision框架中公开了,可伸缩OCR的问题这不就有解决办法了嘛~



不过关于Vision框架目前还没有现成的开源代码插件,只能自己写了,具体代码小哥目前还没公布。

BUT,小哥还是总结了一下自己写代码时的方法经验,而且是针对一个从未用Swift写过任何正经东西的小白:

遇事不决Google之Github上逆向工程各种Swift回购协议请教懂iOS的朋友解决Xcode问题
……

最终东拼西凑,搞出了一个可行的解决方案:iOS Vision OCR服务器,仅在一部iPhone上就能运行。



识别文字信息这趴搞定了,接下来就轮到搜索环节了,相较于上一趴,这部分就简单多了。

小哥用的是ElasticSearch(已开源)和Postgres。

ElasticSearch拥有多节点能够有效避免故障的发生,并且能够在保证速度的情况下容纳数百万个Meme,不过这都是在牺牲了可靠性之后得到的。

而Postgres能够保证搜索结果的可靠性,但在超过一百万张图片的范围时,就会变得特别慢。

一个能保证速度,一个能保证质量,那……



Done!

在这其中,小哥用到了PGSync,它是一件中间件,可以用于同步从Postgres到Elasticsearch/OpenSearch的数据,具体的搜索流程如下:



到这里,整个搜索引擎的搭建已初见雏形,但还没结束……

视频Meme也能支持

因为Meme不仅仅靠梗图来传递,有时候还会有视频。

这倒也简单,直接将视频分割成截图集,之后就能像普通的Meme图一样被识别了。

具体来说,小哥编写了一个小型微服务,通过ffmpeg(它可以执行音频和视频多种格式的录影、转换、串流功能),从视频中截取10个均匀间隔的图片。

然后将截图文件发送到iPhone OCR服务,最终视频文件中会有每个屏幕截图OCR后的结果集。

不过拥有视频检索功能后,毫无疑问OCR服务的负载就重了,一个视频OCR的工作量几乎是一般梗图的10倍。

虽然说OCR应用服务器的速度很快,但也禁不住这样薅,于是iOS OCR服务升级了(多加几台手机),于是最终的装置就变开头图中的那样了。

最终具体的流程图小哥也贴心地给出来了:



小哥的这个Meme搜索引擎出来之后,网友们也都直呼太棒了。



当然也有网友给出了一些建议,认为当前的搜索引擎太文本化了,而很多Meme图本身就没多少文字,更多时候都是“意会”。

对此,小哥本人也作出了回应,称之后还会继续优化搜索引擎:

考虑将图像转换为描述的文本……



不过值得一提的是,目前这个搜索引擎还不太支持中文,中文的梗图搜索效果不是很好,但既然小哥已经将构建方法给出来了,就期待一波万能的网友吧。
评论 (2)
ai***** / 2023-01-23T06:25:51Z

collins / 2023-01-22T19:06:56Z

副局长的视频

更多文章