今天有人问我这个奇怪的问题,我无法给出直接答案。
我有一张描绘 Base64 文本的图像。我怎样才能将其转换为文本?
我通过 pytesseract 尝试了这个,但是在 tesseract 中,有一个语言组件会混淆文本。所以我不认为这是一条路。我尝试进行了一些研究,但似乎这不是一个相当常见的问题(至少可以这么说)。我不知道它有什么用处,但肯定很烦人!
我还可以尝试哪些其他事情?
多么有趣的问题。然而,这项任务并不是非常不规则,因为我以前见过人们从图像中提取大量混乱的单词。提取一长串混乱的 Base64 文本可能更具挑战性。我见过使用的一些 OCR 工具是:
OpenCV 的 opencv-python 包装器
Tesseract 的 pytesseract 包装(正如你所说)
除了两个流行的之外,我还发现了更多 OCR 包装器:https://pythonrepo.com/repo/kba-awesome-ocr-python-computer-vision
要使这些功能发挥作用,图像的质量也需要相当好。如果 Base64 图像是可预测的并且采用结构化形式,您可以创建自己的参考图像并将它们与原始图像进行比较,以确定字符串中的每个字符并完全绕过 OCR 的需要。
OCR 显然存在局限性,例如图像需要缩放、对比度和对齐,任何小错误都可能毁掉 Base64 文本。显然,我以前从未见过 OCR 用于此类事情,所以我不确定该去哪里,但我确信您走在正确的道路上!
我能够使用的一个非常简单的解决方案是使用 google Cloud Vision API。
我有以 Base64 格式提供的屏幕截图,并且能够使用此处的信息轻松设置邮递员请求。 谷歌云视觉
返回的信息包含所有文本以及图像上的文本位置。 非常方便。
唯一有点棘手的是在邮递员中获取身份验证标头的不记名令牌代码。 有关于如何安装 Google CLI 的说明,我就是这样做的,然后输入
> gcloud auth print-access-token
在命令行。 将此令牌传递到承载令牌的标头值中。 或者,还有有关如何从 CLI 而不是 postman 运行命令的说明。