热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

拍照搜题

从技术上来说,这类软件主要有两种方案:“以图搜图”和“OCR文字搜索”①以图搜图的方法就是把用户拍摄的图片和已有的图片题


从技术上来说,这类软件主要有两种方案:“以图搜图”和“OCR+文字搜索”



①以图搜图的方法就是把用户拍摄的图片和已有的图片题库做匹配。这和我们平常通过上传图片的方式在搜索引擎中找与之相似的图片其实非常相似。只是在图片匹配的过程中有“计算机视觉+机器学习”和“深度学习”这两种方式可选。



②和以图搜图的方法相比,“OCR+文字搜索”的方式就复杂一些。用户在拍照后,软件首选需要把其中的字符识别出来,然后在题库中进行检索才能得出结果。和上面图片匹配过程类似的是,在文字识别的过程中也有两种技术方案可选:“传统OCR”和“深度学习”。

虽然这两个流程看上去简洁易懂,但在背后计算机要做的事情远比这些复杂。像PhotoMath,每一个处理过程都要经过图像输入、预处理、校正、噪声去除等多个阶段。而小猿搜题一次正常的“做题”过程也至少要经过预处理、切分、识别、搜索和辅助策略5个步骤。

当软件接受到手机拍摄的图片之后,首先要做异常检测,比如图片是否模糊、是否需要旋转图像等等。经过这个过程之后,再进行二值化,并对字符及公司进行切分。



经过二值化之后,整个图像会呈现出明显的黑白效果,这样一来,图像就变得简单了,而且数据量也减小了,还能凸显出感兴趣的目标的轮廓。接着自然也就可以把单个字符切分出来了。

把字符切分出来之后,软件还是“认不出”这个字符是什么的,所以接下来还要识别这些字符。这时就需要光学字符识别技术(OCR)和深度学习技术上场了。

在识别这个过程中,PhotoMath主要使用了OCR技术,而小猿搜题则主要使用了深度学习技术。不过,由于这两种方法都不能保证100%识别正确,所以中间可能还需要插入一个纠错过程,像“1和l”、“好图所示和如图所示”、“入和人”这些形式非常相近的字符机器也很容易读错。这时候利用语言模型进行纠错就显得比较有必要了。

在做完识别之后,它还要去题库里搜索对应的题目。在这个过程中,计算机又要用到分词、排序等搜索过程中需要用到的技术。










OCR(Optical Character Recognition,光学字符识别),自动研究光学设备产生的图片检查纸上的字符,通过检测暗、亮的模式确定其形状,实现计算机对文字的阅读。






推荐阅读
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • 配置PicGo与Gitee结合Typora打造高效写作环境
    本文详细介绍了如何通过PicGo和Gitee搭建个人图床,并结合Typora实现高效的文章撰写。包括创建图床项目、生成访问令牌、安装配置PicGo和Typora等步骤。 ... [详细]
  • [编程题] LeetCode上的Dynamic Programming(动态规划)类型的题目
    继上次把backTracking的题目做了一下之后:backTracking,我把LeetCode的动态规划的题目又做了一下,还有几道比较难的Medium的题和Hard的题没做出来,后面会继续 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 深度学习与神经网络课程总结
    本文档总结了神经网络和深度学习课程中的关键概念和理论,包括机器学习的基本要素、算法类型以及数据特征表示等。 ... [详细]
  • ED Tree HDU4812 点分治+逆元
    这道题非常巧妙!!!我们进行点分治的时候,算出当前子节点的所有子树中的节点,到当前节点节点的儿子节点的距离,如下图意思就是当前节点的红色节点,我们要求出红色节点的儿子节点绿色节点, ... [详细]
  • 本文详细介绍了跨站脚本攻击(XSS)的基本概念、工作原理,并通过实际案例演示如何构建XSS漏洞的测试环境,以及探讨了XSS攻击的不同形式和防御策略。 ... [详细]
  • Lua字符串1.字符串常见形式字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua语言中字符串可以使用以下三种方式来表示:•单引号间的一串字符。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 使用Python构建网页版图像编辑器
    本文详细介绍了一款基于Python开发的网页版图像编辑工具,具备多种图像处理功能,如黑白转换、铅笔素描效果等。 ... [详细]
  • 本文简要介绍了如何使用 Python Elasticsearch DSL 进行基本和高级查询,包括连接 Elasticsearch、执行简单和复杂查询、聚合、排序及分页等。 ... [详细]
  • 本文详细介绍了Java API中文文档的位置、用途及其查看方法,帮助开发者更高效地利用这一资源。 ... [详细]
  • 本文介绍了使用手机号码检查微信账户是否激活的方法。通常情况下,未注册微信的手机号在微信的好友搜索功能中无法找到,除非该号码设置了隐私保护。此外,文章还探讨了当前可利用的第三方平台来高效地进行此类检测。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
author-avatar
猫儿爱妞_591
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有