文档光学字符识别的制作方法

文档序号:16990440发布日期:2019-03-02 00:55阅读:174来源:国知局
文档光学字符识别的制作方法

本申请要求2016年5月25日提交的标题为“文档光学字符识别”的美国专利申请第15/164,594号的优先权,其全部内容通过引用的方式并入本文中。

本文公开的主题总体上涉及光学字符识别。具体地,本公开涉及与项目描述文档的图像中的文本光学字符识别有关的系统和方法。



背景技术:

光学字符识别(ocr)在文档上的文本与图像的边缘对齐且图像质量较高时用来识别文本图像中的字符。具有适当光线水平的图像(其中文档直接面向摄像机并与其恰当地对齐,并且其中图像不包含除文档以外的任何对象)被称为“合作的”。缺少这些特征中的一个或多个特征的图像被称为“非合作的”。例如,光线水平较差的图像或者包括遮挡了文档的一个或多个部分的遮蔽物的图像是非合作的。在处理非合作图像时,传统的ocr可能会失败。

附图说明

在附图中,通过示例而非限制性的方式示出了一些实施例。

图1是示出了根据一些示例性实施例的适合于车辆登记光学字符识别的网络环境的网络图。

图2是示出了根据一些示例性实施例的适合于车辆登记光学字符识别的识别服务器的组件的框图。

图3是示出了根据一些示例性实施例的适合于捕获文档的图像并与配置为基于图像来识别项目的服务器进行通信的设备的组件的框图。

图4示出了根据一些示例性实施例的文档的示例性二值化图像。

图5示出了根据一些示例性实施例的文档的示例性去扭曲图像。

图6示出了根据一些示例性实施例的图像中的检测到的线条的示例。

图7示出了根据一些示例性实施例的图像中的检测到的页面边界的示例。

图8示出了根据一些示例性实施例的图像中的检测到的文本位置的示例。

图9示出了根据一些示例性实施例的图像中的检测到的文本字段的示例。

图10是流程图,其示出了根据一些示例性实施例的设备在执行识别图像中所描绘的文本的过程期间的操作。

图11是流程图,其示出了根据一些示例性实施例的设备在执行识别图像中所描绘的文本的过程期间的操作。

图12是流程图,其示出了根据一些示例性实施例的没备在执行为根据图像中所描绘的文本识别出的项目生成待售列表的过程期间的操作。

图13是示出了根据一些示例性实施例的可以安装在机器上的软件架构的示例的框图。

图14是根据示例性实施例的计算机系统形式的机器的图示,在该机器中可以执行一组指令,以使机器执行本文所讨论的任何一种或多种方法。

具体实施方式

示例性方法和系统涉及根据图像中所描绘的文本对项目进行识别。示例仅代表的是可能的变型。除非另有明确说明,否则,组件和功能是可选的并且可以进行组合或细分,操作在顺序上可以发生变化或者可以进行组合或细分。在以下描述中,出于解释的目的,阐述了许多具体细节,以提供对示例性实施例的透彻理解。然而,对于本领域技术人员将会是显而易见的是,可以在没有这些具体细节的情况下实践本主题。

车辆和其他项目通常具有对应的文档(比如,登记卡),这种文档包括可以用于识别项目的大量告知性文本信息。当文档上的文本与图像边缘对齐并且图像质量较高时,可以采用传统的光学字符识别(ocr)。在处理非合作图像时,传统的ocr可能会失败。因此,诸如去扭曲、文本对齐以及线条识别和移除之类的特征可以帮助实现非合作图像的ocr。

去扭曲包括:确定图像中所描绘的文档的曲率,并且对图像加以处理以使文档的图像去扭曲,进而使其更准确地满足合作图像的要求。在一些示例性实施例中,通过识别在原始文档上呈笔直状态但在图像中却呈弯曲状态的线条来实现去扭曲。应用使图像中的线条变直的变换,由此对图像的线条和其他部分进行去扭曲处理。

文本对齐包括:确定所描绘文本的实际对齐,即使是在所描绘的文本没有与所描绘的视觉提示(例如,表格上的线条或框)对齐时。在一些示例性实施例中,以不同的位置和间距在文本上虚拟地叠加线条网格,从而确定文本的行对齐。与所识别的文本位置重叠最少的网格的位置和间距可以用作文本对齐的依据。

线条识别和移除包括:识别图像的描绘了线条的部分,并在对图像进行ocr处理之前移除那些线条。在一些示例性实施例中,线条识别包括:通过识别图像的相应部分并取那些相应部分中像素的颜色的平均值来检测线条与文本之间的色差。检测到的线条颜色可以用于识别图像的表示文本的部分内的像素。当对文本部分执行ocr时,可以移除或忽略所识别的像素。

图1是示出了根据一些示例性实施例的适合于车辆登记ocr的网络环境100的网络图。网络环境100包括电子商务服务器120和140、识别服务器130以及设备150a、150b和150c,它们都经由网络170彼此之间通信地耦合。设备150a、150b和150c可以统称为“设备150”或通用地称为“设备150”。电子商务服务器120和识别服务器130可以是基于网络的系统110的一部分。或者,设备150可以直接地或者通过与用于连接到电子商务服务器120或140的网络170不同的本地网络连接到识别服务器130。电子商务服务器120和140、识别服务器130以及设备150各自可以在计算机系统内全部地或部分地实现,如下面结合图13至图14所述。

电子商务服务器120和140经由网络170向其他机器(例如,设备150)提供电子商务应用程序。电子商务服务器120和140也可以直接连接到识别服务器130或与其集成在一起。在一些示例性实施例中,一个电子商务服务器120和识别服务器130是基于网络的系统110的一部分,而其他电子商务服务器(例如,电子商务服务器140)与基于网络的系统110分开。电子商务应用程序可以为用户提供实现如下目的的方式:相互之间直接买卖项目,针对电子商务应用程序提供商实施购买及销售行为,或者这两者皆有。

图1中还示出了用户160。用户160可以是人类用户(例如,人)、机器用户(例如,由软件程序配置为与设备150和识别服务器130进行交互的计算机)或其任何合适的组合(例如,由机器辅助的人或由人监管的机器)。用户160不是网络环境100的一部分,而是与设备150相关联,并且可以是设备150的用户。例如,设备150可以是传感器、台式计算机、车辆计算机、平板电脑、导航设备、便携式媒体设备或属于用户160的智能电话。

在一些示例性实施例中,识别服务器130接收关于用户拥有的项目的数据。例如,附接到设备150a的摄像机可以拍摄用户160希望出售的车辆的车辆登记表的图像,并且可以通过网络170将图像传输到识别服务器130。识别服务器130基于图像识别出车辆。可以将与所识别的车辆有关的信息发送到电子商务服务器120或140、设备150a或其任何组合。该信息可以由电子商务服务器120或140用来帮助生成待售车辆的列表。类似地,图像可以是包含与用户160感兴趣的项目有关的信息的文档,并且该信息可以由电子商务服务器120或140用来帮助选择将要向用户160展示的项目的列表。

图1中所示的任何机器、数据库或设备可以在如下的通用计算机中实现:该通用计算机借助于软件修改成(例如,配置成或编程成)专用计算机,用以执行本文针对该机器、数据库或设备所描述的功能。例如,下面结合图13至图14讨论了能够实现本文描述的任何一种或多种方法的计算机系统。如本文所用,“数据库”是数据存储资源并且可以存储被构造为文本文件、表格、电子表格、关系数据库(例如,对象关系数据库)、三元组存储、分层数据存储或其任何合适组合的数据。此外,图1中所示的任何两个或多个机器、数据库或设备可以组合成单个机器、数据库或设备,并且本文针对任何单个机器、数据库或设备所描述的功能可以在多个机器、数据库或设备之间进行细分。

网络170可以是能够在机器、数据库和设备(例如,识别服务器130和设备150)之间进行通信的任何网络。因此,网络170可以是有线网络、无线网络(例如,移动或蜂窝网络)或其任何合适的组合。网络170可以包括构成专用网络、公共网络(例如,互联网)或其任何合适组合的一个或多个部分。

图2是示出了根据一些示例性实施例的识别服务器130的各组件的框图。识别服务器130是示出为包括通信模块210、文本识别模块220、线条移除模块230、页面检测模块240、去扭曲模块250、用户界面(ui)模块260、列表模块270以及存储模块280,所有这些模块均配置为彼此通信(例如,经由总线、共享存储器或交换机)。可以使用硬件(例如,机器的处理器)来实现本文描述的任何一个或多个模块。此外,这些模块中的任何两个或多个模块可以组合成单个模块,并且本文针对单个模块描述的功能可以在多个模块之间进行细分。此外,根据各种示例性实施例,本文描述为在单个机器、数据库或设备内实现的模块可以分布在多个机器、数据库或设备上。

通信模块210配置为发送和接收数据。例如,通信模块210可以通过网络170接收图像数据,并将接收到的数据发送到文本识别模块220、线条移除模块230和去扭曲模块250。图像数据可以是二维图像、来自连续视频流的帧、三维图像、深度图像、红外图像、双目图像或其任何合适的组合。例如,可以从摄像机接收图像。

文本识别模块220配置为基于输入图像中所描绘的文档,生成项目识别文本。例如,输入图像可以由去扭曲模块250和线条移除模块230进行处理,以提高图像的质量,以便文本识别模块220进行处理。文本识别模块220对经过修改的图像进行处理,以识别出包含在图像中的文本。例如,可以从图像中提取出车辆识别号(vin)。

线条移除模块230配置为识别出线条并将其从图像的文本区域内移除。如果没有移除线条,表格上预先打印出的线条更有可能会对ocr造成干扰。例如,如果文本与线条的对齐使得水平线条穿过文本的底部,则字母“f”可能会被解读为字母“e”。如果在ocr之前执行了线条移除,则不太可能发生这种错误。

页面检测模块240配置为识别图像内的页面。例如,多页文档可以由用户进行拍摄,其中每个页面具有单独的图像,或者单一图像中出现多个页面。通过使用页面检测模块240,识别出图像与不同页面对应的部分,从而允许识别服务器130处理出现在图像中的文档的所有页面。

去扭曲模块250配置为确定图像中所描绘的文档的扭曲,并将一个或多个变换应用于图像的对应部分以抵消这种扭曲。在没有去扭曲的情况下,扭曲的字符不太可能得到正确的识别。另外,在没有去扭曲的情况下,预期包含了特定字符串的区域不太可能被正确地确定。例如,如果图像的一部分发生了扭曲,则字符串中的第一个字符可以与图像的边缘对齐,而最后一个字符是处于30度的角度下并且发生垂直偏移的量大于字符高度。因此,在没有去扭曲的情况下,基于字符串中第一个字符的位置来确定大小并定向的矩形区域将不包含最后一个字符。在进行去扭曲之后,与特定字符串相关联的区域更有可能被正确地确定大小和对齐。

用户界面模块260配置为使得用户界面呈现在设备150a-150c中的一个或多个设备上。例如,用户界面模块260可以由经由网络170向设备150提供html文件的web服务器实现。用户界面可以呈现由通信模块210接收到的图像、从存储模块280检索到的与根据图像中所描绘的文档识别出的项目有关的数据、由列表模块270生成或选择的项目列表或其任何合适的组合。

列表模块270配置为生成项目列表,该项目列表是针对根据文本识别模块220所生成的文本而识别出的项目。例如,在用户上传了描绘车辆登记的图像并且车辆被成功识别出之后,列表模块270可以创建出项目列表,其包括来自项目目录的车辆型号的图像、来自项目目录的车辆描述或其任何合适的组合。可以提示用户确认或修改所生成的列表,或者可以响应于所描绘项目的识别而自动地发布所生成的列表。可以经由通信模块210将列表发送到电子商务服务器120或140。在一些示例性实施例中,列表模块270在电子商务服务器120或140中实现,并且响应于从识别服务器130发送到电子商务服务器120或140的项目的标识符,生成列表。

存储模块280配置为存储和检索由文本识别模块220、线条移除模块230、页面检测模块240、去扭曲模块250、用户界面模块260和列表模块270生成并使用的数据。例如,文本识别模块220所使用的分类器可以由存储模块280存储。与图像中所描绘的项目的识别有关的信息也可以由存储模块280存储。电子商务服务器120或者140可以请求识别在图像中所描绘的文档中描述的项目(例如,通过提供图像、图像标识符或两者),其可以由存储模块280从存储中检索出并且使用通信模块210通过网络170发送。

图3是示出了根据一些示例性实施例的设备150的各组件的框图。设备150是示出为包括输入模块310、摄像机模块320和通信模块330,所有这些模块都配置为彼此通信(例如,经由总线、共享存储器或交换机)。可以使用硬件(例如,机器的处理器)来实现本文描述的任何一个或多个模块。此外,这些模块中的任何两个或多个模块可以组合成单个模块,并且本文针对单个模块描述的功能可以在多个模块之间进行细分。此外,根据各种示例性实施例,本文描述为在单个机器、数据库或设备内实现的模块可以分布在多个机器、数据库或设备上。

输入模块310配置为经由用户界面从用户接收输入。例如,用户可以将他们的用户名和密码输入到输入模块310中,对摄像机进行配置,选择待用作列表或项目搜索的依据的图像,或者其任何合适的组合。

摄像机模块320配置为捕获图像数据。例如,可以从摄像机接收图像,可以从红外摄像机接收深度图像,可以从双目摄像机接收一对图像,等等。

通信模块330配置为将由输入模块310或摄像机模块320接收的数据传送到识别服务器130、电子商务服务器120或电子商务服务器140。例如,输入模块310可以接收对摄像机模块320拍摄的图像的选择以及图像描绘了用户(例如,用户160)希望出售的项目的文档的指示。通信模块330可以将图像和指示传输到电子商务服务器120。电子商务服务器120可以将图像发送到识别服务器130以基于图像中所描绘的文档来请求识别项目,基于项目生成列表模板,并经由通信模块330和输入模块310使该列表模板呈现给用户。

图4示出了根据一些示例性实施例的文档的示例性二值化图像。未示出的文档的原始输入图像可以是彩色的。例如,输入图像可以是600x800像素,每个像素由24位红绿蓝(rgb)值表示。为了获得二值化图像,对每个像素进行处理并用黑色或白色加以替换。可以采用许多不同的算法来执行二值化处理。例如,可以将rgb值相加并与阈值进行比较,将低于(暗于)阈值的值转换为黑色,而高于阈值的值转换为白色。作为另一示例,可以将单个通道(例如,绿色通道)与阈值进行比较。作为又一示例,可以在相加之前对通道进行加权。

图5示出了图4的文档的示例性去扭曲图像。与图4相比,由于对图像进行了去扭曲,因此,图5的水平线条和相关文本变得更直。因此,对与图5的图像线条对齐的区域执行的ocr可能会比对与图4的图像线条对齐的区域执行的ocr更成功。下面结合图11来描述去扭曲过程。

图6示出了图4的图像中检测到的线条的示例。在一些示例性实施例中,线条检测是在对图像进行去扭曲的过程中所执行的步骤,下面结合图11更详细地进行描述。可以通过识别高水平能量区域来执行线条检测。附加地或替代地,可以通过应用二元分类器(例如,支持向量机或循环神经网络)来执行线条检测,该二元分类器经过训练来将图像的每个元素分类为线条的一部分或者不是线条的一部分。

图7示出了根据一些示例性实施例的图5的图像中的检测到的页面边界710和720的示例。基于页面边界710和720的检测,识别页面区域730。可以基于页面边界710和720的位置处的主垂直线条、基于页面区域730的主水平线条的端点或其任何合适的组合来检测页面边界710和720。在一些示例性实施例中,图像的边缘用作页面边界。替代地或附加地,可以基于页面边界检测在图像内识别多个页面区域。例如,以实际上折叠在一起的三个部分这一形式存在的文档可以展开,并且所有三个页面在单个图像中一起进行扫描.因此,页面检测允许适当地划分图像,进而可以正确地处理每个页面。

图8示出了根据一些示例性实施例的图5的图像中的检测到的文本位置的示例。例如,边缘检测器(例如,sobel滤波器)可以用来基于垂直能量定位可能包含文本的区域。垂直能量是垂直偏移的相邻像素之间的相似性的度量。因此,颜色相同的完全垂直的线条具有最大的垂直能量。由于许多字符包含了垂直元素,因此文本区域往往具有比非文本区域更高的垂直能量。通过图8与图5之间的比较可以看出,并非每个检测到的文本位置实际上都对应于文本的位置。通过进一步比较图8和图7,可以看出,大多数被错误地识别的文本位置位于页面区域730之外,因此在处理页面区域730时可以忽略。

图9示出了根据一些示例性实施例的图像中的检测到的文本字段的示例。从图5的图像中提取图像片段910。从图9中可以看出,图像片段910中描绘的文本基本上与图像边界对齐,这表明图4的图像去扭曲取得了成功。从图像片段910中提取出文本920用于ocr。例如,图像片段910可以包含由垂直线条划分的三条信息。每条信息可以具有表示特定文档、特定目的或特定文档/目的对的已知含义。例如,线条上的第一字段可以是车辆登记号,第二字段可以指示出车辆所有者的数量,而第三字段可以指示出车辆的状态。因此,可以从图像片段910的部分的第一字段提取出文本920,并且可以将ocr应用于文本920,以确定出车辆登记号。

图10是流程图,其示出了根据一些示例性实施例的设备在执行识别图像中所描绘的文本的过程1000期间的操作。过程1000包括操作1010-1040。作为示例而非限制性的,过程1000的各操作被描述为由图1的识别服务器130和图2的模块210-280执行。

在操作1010中,识别服务器130访问图像。例如,设备150a的用户160可以拍摄车辆登记卡的照片并通过网络170将该照片发送到识别服务器130。识别服务器130的通信模块210接收图像并将其提供给存储模块280,以便存储图像并将图像提供给其他模块。

在操作1020中,文本识别模块220识别图像的包含文本的部分。例如,如上面结合图8所述,可以使用高垂直能量的区域来确定图像的哪些部分可能包含文本。

在操作1030中,对于图像中所描绘的线段(其处于图像的在操作1020中被识别为包含文本的各部分之外),线条移除模块230识别其颜色。例如,可以在图像中识别出具有高水平能量的线条,如图6所示。如图8的示例中所示,文本区域可以用作掩盖物,以移除检测到的线条的部分。这样做仅留下了文本区域之外的线条部分。对由线条部分识别的原始图像部分的颜色进行确定。例如,可以对与文本区域之外的线条的部分相对应的像素值进行平均,以识别线条的平均颜色。在一些示例性实施例中,每根识别的线条的颜色是分开进行确定。在其他示例性实施例中,所有线条的颜色被确定为单个值。

对于线条的不同段,所识别的线条的颜色可以是不同的。例如,考虑由摄像机捕获的文档的图像,同时该文档部分地处于阴影下,部分地处于阳光直射下。对于人类观察者来说,文档上的线条是深绿色的。然而,在图像中,描绘了线条处于阳光直射下的部分的像素可能看起来是浅绿色的,而描绘了线条处于阴影中的部分的像素可能看起来近乎是黑色的。尽管颜色发生了变化,但仍然可以通过其高水平能量来识别出全部线条。

在操作1040中,文本识别模块220结合线条移除模块230来识别文本,具体是通过:对图像的描绘文本的部分执行ocr,同时忽略具有线段颜色的部分内的元素。例如,如果文本为黑色,背景为白色且线条为绿色,则文本区域的某些部分将包含绿色的像素。在操作1040中,对文本区域执行ocr,同时将绿色像素视为它们是背景颜色。因此,与线条被视为文本的一部分的过程相比,ocr更有可能为文本字符生成正确的值。

可以通过确定像素与线段的颜色之间的差值来确定像素是否是线段的颜色。例如,如果线段是rgb颜色(0,102,51)(深绿色)而像素是(255,128,0)(橙色),则差异是(255,26,-51)。可以计算出这种差异的幅度并将其与阈值进行比较。一种幅度计算方式是几何距离。几何距离的样本阈值是18。对于本示例,深绿色线段与橙色像素之间的几何距离是261,远远大于了阈值。因此,该像素不会被归类为线段的一部分。在一些示例性实施例中,像素的分类由经过训练来区分线条像素与背景像素的支持向量机(svm)执行。

图11是流程图,其示出了根据一些示例性实施例的设备在执行识别图像中所描绘的文本的过程1100期间的操作。过程1100包括操作1010、1110、1120、1130、1140、1150和1160。作为示例而非限制性的,过程1100的各操作被描述为由图1的识别服务器130和图2的模块210-280执行。

在操作1110中,去扭曲模块250识别在操作1010中访问的图像中的弯曲线条。例如,可以在图像中识别出具有高水平能量的线条,如图6所示。

基于弯曲线条,去扭曲模块250使图像去扭曲(操作1120)。在一些示例性实施例中,生成线条的多项式近似(例如,三次多项式),并且应用逆多项式来将每根线条拉直。通过对区域边缘处的线条应用拉直函数的加权混合,使得线条之间的区域去扭曲。因此,在紧邻线条的部分中,所应用的去扭曲函数与应用于该线条的去扭曲函数基本上是相同的,而在与边界线条相距相等距离的部分中,去扭曲函数是两根线条中每一根的去扭曲函数的均匀混合。

在操作1130中,页面检测模块240识别图像中的页面边缘。可以基于页面边界位置处的主垂直线、基于主水平线的端点或其任何合适的组合来检测页面边界。

在操作1140中,文本识别模块220确定图像中文本线条的间距。在一些示例性实施例中,以不同的位置和间距在文本上虚拟地叠加线条网格,从而确定文本的线条间距。与所识别的文本位置重叠最少的网格的位置和间距可以用作文本对齐的依据。

例如,图像的描绘页面的部分可以被划分为标准数量的线条,作为初始网格。作为另一示例,操作1020可以用于确定文本位置,文本位置可以用于识别文本的线条数量。为了说明本示例,考虑图7和图8。在页面边界710和720内,可以丢弃一根或多根垂直线条,并且确定与图8的区域的不同交叉的数量。当使用多根垂直线条时,可以使用垂直线条中的最大交叉数或垂直线条中的平均交叉数。在一些示例性实施例中,通过将网格中每一行的初始大小设置为相等来放置初始网格。在其他示例性实施例中,基于所识别的文本的位置进行初始拟合。

网格线条可以从初始网格位置上下移动,它们之间的间距可以增大和减小,并且线条的数量可以增多和减少。在一些示例性实施例中,线条以线条间距的10%的增量上下移动,对于每个线条间距测试10个不同的位置;线条之间的间距以原始线条间距的10%的增量增加和减少,测试9个不同的间距,范围为原始线条间距的+40%至-40%;或者两者都进行。

在操作1150中,文本识别模块220使用页面边缘和线条间距来确定去扭曲图像的描绘文本的部分。在一些示例性实施例中,访问已知形式的数据库,并且图像用于确定最佳匹配形式。最佳匹配形式用作模板,以识别图像中文本的位置及其对应的含义。用于找到匹配形式的信息可以包括页面的纵横比、线条数量、线条间距与页面高度的比值、水印或其任何合适的组合。

在操作1160中,文本识别模块220对描绘文本的一个或多个确定部分执行ocr。例如,所识别的形式可以包含特定字段中的车辆登记号,从而提示文本识别模块220对该字段执行ocr以提取出车辆登记号。可以使用经过训练的递归神经网络(rnn)(比如,ocropus)来执行ocr。在一些示例性实施例中,rnn在通用英语文献语料库的基础上进行训练。在其他示例性实施例中,仅采用大写字母和数字、特定字体或者针对正在处理的特定文档的有效字符的其他已知限制来训练rnn。

作为过程1100的另一种应用的示例,可以在图像中描绘一个或多个识别文档(例如,护照、驾驶执照或学校识别卡)。因此,在操作1010、1110、1120、1130和1140中,对图像进行访问、去扭曲和分析,以确定页面布局和线条间距。在操作1150中,基于图像分析,识别特定文档。在操作1160中,基于所识别的文档,对图像的特定部分执行ocr。例如,可以确定出驾驶执照的特定状态并识别出驾驶执照号码的位置。

在一些示例性实施例中,对设备150执行过程1100的一部分或全部。例如,可以实时执行操作1010中的图像的访问,同时用户定位摄像机以捕获图像。操作1130、1140和1150也可以实时地执行,从而显示页面边缘、线条间距、文本部分或其任何合适组合的叠加。因此,在将所捕获的图像提交给识别服务器130之前,用户能够调整摄像机的朝向、摄像机与文档之间的距离、光线水平或其任何合适的组合。

图12是流程图,其示出了根据一些示例性实施例的没备在执行为根据图像中所描绘的文本识别出的项目生成待售列表的过程1200期间的操作。过程1200包括操作1210-1240。作为示例而非限制性的,过程1200的各操作被描述为由图1的识别服务器130和图2的模块210-280执行。

在操作1210中,识别服务器130从用户接收图像。例如,设备150a的用户160可以拍摄车辆登记卡的照片并通过网络170将其发送到识别服务器130。识别服务器130的通信模块210接收图像并将其提供给存储模块280,以便存储图像并将图像提供给其他模块。

在操作1220中,文本识别模块220使用ocr从图像中提取车辆的标识符。例如,过程1000和过程1100可以用于确定图像的描绘标识符的部分,并且识别出标识符的文本。

在操作1230中,列表模块270经由存储模块280访问车辆信息数据库,以检索关于所识别的车辆的附加信息。例如,数据库可以包含车辆的品牌和型号、车辆的制造年份、车辆的所有者数量、发动机的类型或其任何合适的组合。

在操作1240中,列表模块270使用附加信息中的至少一项来为车辆生成待售列表。例如,可以在电子商务服务器120或140上创建列表,该列表包括车辆的品牌、型号和年份的库存照片。

本文描述的一种或多种方法可以无需作出特定的努力或采用特定的资源,这些努力或资源将涉及到识别文档图像中的文本或者为成像文档中识别出的项目创建项目列表。也可以通过本文描述的一种或多种方法来减少用户在识别车辆、输入车辆数据或生成项目列表方面所耗费的努力。例如,待售车辆的列表的自动生成为用户节省了时间,并通过避免耗时的数据输入和传输间接地减少了处理器使用并降低了功耗。可以类似地减少由一个或多个机器、数据库或设备(例如,在网络环境内)使用的计算资源。这样的计算资源的示例包括处理器周期、网络流量、存储器使用、数据存储容量、功耗和冷却容量。

软件架构

图13是示出了可以安装在上述任何一个或多个没备上的软件1302的架构的框图1300。图13仅仅是软件架构的非限制性示例,并且将会理解的是,许多其他架构可以实现来促进本文描述的功能。软件架构1302可以由硬件实现,比如,图14的机器1400,其包括处理器1410、存储器1430和i/o组件1450。在本示例性架构中,软件1302可以被概念化为层的堆栈,其中每层可以提供特定的功能。例如,软件1302包括诸如操作系统1304、库1306、框架1308和应用1310之类的层。根据一些实现方式,在操作上,应用1310通过软件栈调用应用编程接口(api)调用1312,并且响应于api调用1312接收消息1314。

在各种实现方式中,操作系统1304管理硬件资源并提供公共服务。例如,操作系统1304包括内核1320、服务1322和驱动程序1324。在一些实现方式中,内核1320充当硬件与其他软件层之间的抽象层。例如,内核1320提供存储器管理、处理器管理(例如,调度)、组件管理、联网和安全设置,并且还有其他功能。服务1322可以为其他软件层提供其他公共服务。驱动程序1324可以负责控制底层硬件或与其相接。例如,驱动程序1324可以包括显示驱动程序、摄像机驱动程序、驱动程序、闪存驱动程序、串行通信驱动程序(例如,通用串行总线(usb)驱动程序)、驱动程序、音频驱动程序、电源管理驱动程序等等。

在一些实现方式中,库1306提供可以由应用1310利用的低级公共基础结构。库1306可以包括系统库1330(例如,c标准库),系统库1330可以提供诸如内存分配功能、字符串操作功能、数学功能等功能。另外,库1306可以包括api库1332,比如,媒体库(例如,用于支持各种媒体格式的呈现和操纵的库,所述媒体格式比如运动图像专家组-4(mpeg4)、高级视频编码(h.264或avc)、运动图像专家组第3层(mp3)、高级音频编码(aac)、自适应多速率(amr)音频编解码器、联合图像专家组(jpeg或jpg)或便携式网络图形(png))、图形库(例如,用于在显示器上的图形背景中以二维(2d)和三维(3d)形式呈现的opengl框架)、数据库库(例如,用于提供各种关系数据库功能的sqlite)、web库(例如,用于提供网页浏览功能的webkit)等。库1306还可以包括各种其他库1334,以向应用1310提供许多其他api。

根据一些实现方式,框架1308提供可以由应用1310利用的高级公共基础结构。例如,框架1308提供各种图形用户界面(gui)功能、高级资源管理、高级位置服务等。框架1308可以提供可以由应用1310利用的广泛的其他api,其中一些api可以专用于特定的操作系统或平台。

在示例性实施例中,应用1310包括家庭应用1350、联系人应用1352、浏览器应用1354、书籍阅读器应用1356、位置应用1358、媒体应用1360、消息传递应用1362、游戏应用1364以及各种其他应用(比如,第三方应用1366)。根据一些实施例,应用1310是执行程序中定义的功能的程序。可以采用各种编程语言来创建一个或多个应用1310,这些应用以各种方式构造,比如,面向对象的编程语言(例如,objective-c、java或c++)或过程编程语言(例如,c或汇编语言)。在特定示例中,第三方应用1366(例如,由除特定平台的供应商以外的实体使用androidtm或iostm软件开发工具包(sdk)开发的应用)可以是在移动操作系统(比如,iostm、androidtmphone或其他移动操作系统)上运行的移动软件。在本示例中,第三方应用1366可以调用由移动操作系统1304提供的api调用1312来帮助实现本文描述的功能。

示例性机器架构和机器可读介质

图14是示出了根据一些示例性实施例的机器1400的各组件的框图,机器1400能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所讨论的任何一种或多种方法。具体而言,图14示出了示例性形式为计算机系统的的机器1400的图示,在其内可以执行用于使机器1400执行本文所讨论的任何一种或多种方法的指令1416(例如,软件、程序、应用程序、小应用程序、app或其他可执行代码)。在替代实施例中,机器1400作为独立设备操作,或者可以耦合(例如,联网)到其他机器。在联网部署中,机器1400可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份操作,或者作为对等(或分布式)网络环境中的对等机器操作。机器1400可以包括但不限于服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能手机、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能家电)、其他智能设备、web设备、网络路由器、网络交换机、网桥或者能够顺序地或以其他方式执行指明将由机器1400采取的动作的指令1416的任何机器。此外,尽管仅图示了单个机器1400,但是,术语“机器”还应被视为包括单独地或共同地执行指令1416以执行本文所讨论的任何一种或多种方法的机器1400的集合。

机器1400可以包括处理器1410、存储器1430和i/o组件1450,它们可以配置为例如经由总线1402彼此进行通信。在示例性实施例中,例如,处理器1410(例如,中央处理单元(cpu)、简化指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、另一处理器或其任何合适的组合)可以包括可以执行指令1416的处理器1412和处理器1414。术语“处理器”旨在包括多核处理器,所述多核处理器可以包括可以同时执行指令的两个或多个独立处理器(也被称为“核”)。尽管图14示出了多个处理器,但是,机器1400可以包括具有单核的单个处理器、具有多核的单个处理器(例如,多核处理器)、具有单核的多个处理器、具有多核的多个处理器或其任何组合。

存储器1430可以包括存储器1432、静态存储器1434以及存储单元1436,它们均可经由总线1402访问处理器1410。存储单元1436可以包括机器可读介质1438,其上存储有体现本文描述的任何一种或多种方法或功能的指令1416。指令1416还可以在由机器1400执行期间完全地或部分地驻留在主存储器1432内,静态存储器1434内,处理器1410中的至少一个内(例如,处理器的高速缓存存储器内)或其任何合适的组合。因此,在各种实现方式中,主存储器1432、静态存储器1434以及处理器1410被认为是机器可读介质1438。

如本文所用,术语“存储器”指的是能够临时地或永久地存储数据的机器可读介质1438,并且可以被视为包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪存和高速缓冲存储器。虽然机器可读介质1438在示例性实施例中被示为单个介质,但是术语“机器可读介质”应当被视为包括能够存储指令1416的单个介质或多个介质(例如,集中式或分布式数据库或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应被视为包括能够存储由机器(例如,机器1400)执行的指令(例如,指令1416)的任何介质或多个介质的组合,使得指令在由机器的一个或多个处理器(例如,处理器1410)执行时使机器执行本文描述的任何一种或多种方法。因此,“机器可读存储介质”指的是单个存储装置或设备以及包括多个存储装置或设备的“基于云的”存储系统或存储网络。因此,术语“机器可读存储介质”应被视为包括但不限于一个或多个数据存储库,其形式为固态存储器(例如,闪存)、光学介质、磁介质、其他非易失性存储器(例如,可擦除可编程只读存储器(eprom))或其任何合适的组合。术语“机器可读介质”包括瞬态介质,比如传输介质或信号。

i/o组件1450包括各种各样的组件,用于接收输入,提供输出,产生输出,传输信息,交换信息,获取测量值等。通常,应当理解的是,i/o组件1450可以包括图14中未示出的许多其他组件。仅仅出于简化以下讨论的目的,i/o组件1450根据功能进行分组,并且这种分组决不具有限制性。在各种示例性实施例中,i/o组件1450包括输出组件1452和输入组件1454。输出组件1452包括可视组件(例如,显示器,诸如等离子显示面板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt))、声学组件(例如扬声器)、触觉组件(例如,振动电机)、其他信号发生器等等。输入组件1454包括字母数字输入组件(例如,键盘、配置为接收字母数字输入的触摸屏、光电键盘或其他字母数字输入组件)、基于点的输入组件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他指向仪器)、触觉输入组件(例如,物理按钮、提供触摸或触摸手势的位置和/或力度的触摸屏或者其他触觉输入组件)、音频输入组件(例如,麦克风)等等。

在一些其他示例性实施例中,i/o组件1450包括生物识别组件1456、运动组件1458、环境组件1460或定位组件1462,以及各种其他组件。例如,生物识别组件1456包括用于检测表情(例如,手部表达、面部表情、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、对人进行识别(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)的组件等。运动组件1458包括加速度传感器组件(例如,加速度计)、重力传感器组件、旋转传感器组件(例如,陀螺仪)等。环境组件1460包括例如照明传感器组件(例如,光度计)、温度传感器组件(例如,一个或多个检测环境温度的温度计)、湿度传感器组件、压力传感器组件(例如,气压计)、声学传感器组件(例如,一个或多个检测背景噪声的麦克风)、接近传感器组件(例如,检测附近物体的红外传感器)、气体传感器(例如,机器嗅觉检测传感器、用于检测危险气体的浓度以确保安全或测量大气中污染物的气体检测传感器)或者可以提供与周围物理环境相对应的指示、测量或信号的其他组件。定位组件1462包括位置传感器组件(例如,全球定位系统(gps)接收器组件)、高度传感器组件(例如,检测可以得出高度的空气压力的高度计或气压计)、方向传感器组件(例如,磁力计)等。

可以使用各种技术来实现通信。i/o组件1450可以包括可操作以分别经由耦合1482和耦合1472将机器1400耦合到网络1480或设备1470的通信组件1464。例如,通信组件1464包括网络接口组件或与网络1480相接的另一合适设备。在其他示例中,通信组件1464包括有线通信组件、无线通信组件、蜂窝通信组件、近场通信(nfc)组件、组件(例如,低能耗)、组件以及经由其他方式提供通信的其他通信组件。设备1470可以是另一机器或各种外围设备中的任何一种(例如,经由usb耦合的外围设备)。

此外,在一些实现方式中,通信组件1464检测标识符,或者包括可操作以检测标识符的组件。例如,通信组件1464包括射频识别(rfid)标签读取器组件、nfc智能标签检测组件、光学读取器组件(例如,光学传感器,用于检测诸如通用产品代码(upc)条形码之类的一维条形码、诸如快速响应(qr)码之类的多维条形码、aztec码、datamatrix、dataglyph、maxicode、pdf417、ultracode、统一商法典简化空间条码种类(uccrss)-2d条形码和其他光学代码)、声学检测组件(例如,用于识别经过标记的音频信号的麦克风)或者其任何合适的组合。另外,可以经由通信组件1464得出各种信息,比如,经由互连网协议(ip)地理定位的位置、经由信号三角测量的位置、经由检测可以指示出特定位置的nfc信标信号的位置,等等。

传输介质

在各种示例性实施例中,网络1480的一个或多个部分可以是自组网、内联网、外联网、虚拟专用网络(vpn)、局域网(lan)、无线lan(wlan)、广域网(wan)、无线wan(wwan)、城域网(man)、互联网、互联网的一部分、公共交换电话网(pstn)的一部分、普通老式电话服务(pots)网络、蜂窝电话网络、无线网络、网络、另一种类型的网络或者两个或多个这样的网络的组合。例如,网络1480或网络1480的一部分可以包括无线或蜂窝网络,并且耦合782可以是码分多址(cdma)连接、全球移动通信系统(gsm)连接或另一类型的蜂窝或无线耦合。在本示例中,耦合1482可以实现各种类型的数据传输技术中的任何一种,比如,单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用分组无线服务(gprs)技术、gsm演进增强型数据速率(edge)技术、包括3g的第三代合作伙伴计划(3gpp)、第四代无线(4g)网络、通用移动电信系统(umts)、高速分组接入(hspa)、全球微波接入互操作性(wimax)、长期演进(lte)标准、由各种标准制定组织定义的其他标准、其他远程协议或其他数据传输技术。

在示例性实施例中,指令1416经由网络接口设备(例如,包括在通信组件1464中的网络接口组件)使用传输介质通过网络1480进行传输或接收,并且还利用了多种众所周知的传输协议中的任何一种(例如,超文本传输协议(http))。类似地,在其他示例性实施例中,指令1416使用传输介质经由耦合1472(例如,对等耦合)传输或接收到设备1470。术语“传输介质”应被视为包括任何能够存储、编码或携带指令1416以供机器1400执行的无形介质,并且包括数字或模拟通信信号或用于促进这种软件的通信的其他无形介质。传输介质是机器可读介质的实施例。

语言

在整个说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管一种或多种方法的各个操作被示出并描述为单独的操作,但是,可以同时执行各个操作中的一个或多个操作,并且不需要以所示的顺序执行操作。在示例性配置中作为单独组件呈现的结构和功能可以实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以实现为单独的组件。这些及其他变型、修改、添加和改进都落入了本文主题的范围内。

尽管已经参考具体的示例性实施例描述了本发明主题的概述,但是在不脱离本公开的实施例的更宽泛范围的前提下,可以对这些实施例作出各种修改和改变。仅出于方便的目的,本发明主题的这些实施例可以单独地或共同地被术语“发明”引用,同时并不意图将本申请的范围主动地限制于任何单一公开内容或发明构思(如果实际上公开了一个以上的话)。

以充分的细节描述了本文所示的实施例,从而使得本领域技术人员能够实践所公开的教导。可以使用并从其导出其他实施例,由此便可以在不脱离本公开的范围的情况下进行结构上和逻辑上的替换和改变。因此,具体实施方式不应被视为具有限制性,并且各实施例的范围仅由所附权利要求以及这些权利要求的合法等同物的全部范围来限定。

如本文所用,术语“或”可以以包含性或排他性的含义来加以解释。此外,可以为在此描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、模块、引擎和数据存储之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中示出了特定的操作。还设想到了其他功能分配,并且这些功能分配可以落入本公开的各种实施例的范围内。一般情况下,在示例性配置中作为单独资源呈现的结构和功能可以实现为组合结构或资源。类似地,作为单个资源呈现的结构和功能可以实现为单独的资源。这些及其他变型、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图将被视为说明性的而非限制性的。

以下列举的示例定义了本文讨论的方法、机器可读介质和系统(即,装置)的各种示例性实施例:

示例1.一种系统,包括:

存储指令的存储器;以及

一个或多个处理器,所述处理器由所述指令配置为执行操作,所述操作包括:

访问图像;

确定所述图像的描绘文本的部分;

识别所述图像中描绘的线段的颜色,所述线段处于所述图像的描绘文本的所述部分之外;并且

通过对所述图像的描绘文本的所述部分执行光学字符识别且同时忽略所述图像的所述部分内具有所述线段的所述颜色的元素,识别所述文本。

示例2.根据示例1所述的系统,其中所述线段的所述颜色的所述识别包括确定所述颜色的多个不同颜色值,所述多个不同颜色值中的每一个对应于所述图像的描绘文本的所述部分的不同子部分。

示例3.根据示例1至2中任一项或多项所述的系统,其中所述对所述图像的描绘文本的所述部分执行光学字符识别包括:确定所述线段的所述颜色与所述图像的描绘文本的所述部分的每个元素的颜色之间的差值。

示例4.根据示例1至3中任一项或多项所述的系统,其中所述忽略所述部分内具有所述线段的所述颜色的所述元素包括:将每个元素的所述差值与预定阈值进行比较。

示例5.根据示例1至4中任一项或多项所述的系统,其中所述识别所述线段的所述颜色包括:将二元分类器应用于所述图像的一部分,以识别所述图像的描绘所述线段的部分。

示例6.根据示例1至5中任一项或多项所述的系统,其中所述识别所述线段的所述颜色还包括:确定所述图像的描绘所述线段的所述部分的平均颜色。

示例7.根据示例1至6中任一项或多项所述的系统,其中所述确定所述图像的描绘文本的所述部分包括:使用边缘检测来确定所述图像内的垂直能量的分布。

示例8.根据示例1至7中任一项或多项所述的系统,其中所述确定所述图像的描绘文本的所述部分包括:

在所述图像上迭代地叠加网格,所述网格的参数对于每次迭代是不同的;

在每次迭代中,确定所述网格与所述图像中描绘的前景项目之间的重叠程度;并且

选择与所述迭代中最低重叠程度相对应的所述网格的参数。

示例9.根据示例1至8中任一项或多项所述的系统,其中所述操作还包括:

使用所述文本来填充在线市场中的项目列表。

示例10.根据示例1至9中任一项或多项所述的系统,其中:

所述图像描绘了车辆的车辆登记;以及

所述项目列表是所述车辆的项目列表。

示例11.一种方法,包括:

访问图像;

确定所述图像的描绘文本的部分;

识别所述图像中描绘的线段的颜色,所述线段处于所述图像的描绘文本的所述部分之外;并且

由机器的一个或多个处理器通过对所述图像的描绘文本的所述部分执行光学字符识别且同时忽略所述部分内具有所述线段的所述颜色的元素,识别所述文本。

示例12.根据示例11所述的方法,其中所述线段的所述颜色的所述识别包括确定所述颜色的多个不同颜色值,所述多个不同颜色值中的每一个对应于所述图像的描绘文本的所述部分的不同子部分。

示例13.根据示例11至12中任一项所述的方法,其中所述对所述图像的描绘文本的所述部分执行光学字符识别包括:确定所述线段的所述颜色与所述图像的描绘文本的所述部分的每个元素的颜色之间的差值。

示例14.根据示例11至13中任一项所述的方法,其中所述忽略所述图像的所述部分内具有所述线段的所述颜色的所述元素包括:将每个元素的所述差值与预定阈值进行比较。

示例15.根据示例11至14中任一项所述的方法,其中所述识别所述线段的所述颜色包括:将二元分类器应用于所述图像的一部分,以识别所述图像的描绘所述线段的部分。

示例16.根据示例11至15中任一项所述的方法,其中所述识别所述线段的所述颜色还包括:确定所述图像的描绘所述线段的所述部分的平均颜色。

示例17.根据示例11至16中任一项所述的方法,其中所述确定所述图像的描绘文本的所述部分包括:使用边缘检测来确定所述图像内的垂直能量的分布。

示例18.根据示例11至17中任一项所述的方法,其中所述确定所述图像的描绘文本的所述部分包括:

在所述图像上迭代地叠加网格,所述网格的参数对于每次迭代是不同的;

在每次迭代中,确定所述网格与所述图像中描绘的前景项目之间的重叠程度;并且

选择与所述迭代中最低重叠程度相对应的所述网格的参数。

示例19.根据示例11至18中任一项所述的方法,还包括:

使用所述文本来填充在线市场中的项目列表。

示例20.一种机器可读存储介质,所述机器可读存储介质存储能够由机器的一个或多个处理器执行来执行操作的指令,所述操作包括:

访问图像;

确定所述图像的描绘文本的部分;

识别所述图像中描绘的线段的颜色,所述线段处于所述图像的描绘文本的所述部分之外;并且

通过对所述图像的描绘文本的所述部分执行光学字符识别且同时忽略所述部分内具有所述线段的所述颜色的元素,识别所述文本。

示例21.一种承载指令的机器可读介质,所述指令能够由机器的一个或多个处理器执行来执行根据示例11至19中任一项所述的方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1