重度互联网爱好者们福利来了!

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

现在外网一位小哥搞出了一个互联网规模的 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 图本身就没多少文字,更多时候都是“意会”。

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

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

梗图搜索神器来了,还能搜视频,网友:六年没找到的梗图这里两分钟找到了-风君雪科技博客

不过值得一提的是,目前这个搜索引擎还不太支持中文,中文的梗图搜索效果不是很好,但既然小哥已经将构建方法给出来了,就期待一波万能的网友吧。(手动狗头)

如果你对这个项目感兴趣的话,可以戳下文链接~

传送门:

https://findthatmeme.com/

参考链接:

  • https://findthatmeme.com/blog/2023/01/08/image-stacks-and-iphone-racks-building-an-internet-scale-meme-search-engine-Qzrz7V6T.html

本文来自微信公众号:量子位 (ID:QbitAI),作者:Pine