想要从扫描文档中提取数据?尝试 纳米网™ 高级 基于人工智能的 OCR 扫描仪 提取和组织信息 扫描文件 自动.
介绍
为了方便起见,世界已从纸张和手写内容转向数字文档,将图像和扫描文档转换为有意义的数据的重要性急剧上升。
为了满足高精度文档数据提取的需求,众多研究机构和公司(即 Google、AWS、Nanonets 等)深入研究计算机视觉和自然语言处理 (NLP) 领域的技术。
深度学习技术的蓬勃发展确保了可提取数据的巨大飞跃;我们不再局限于提取文本,还可以提取其他数据结构,例如表和键值对。现在许多解决方案提供各种产品来满足个人和企业主在文档数据提取方面的需求。
本文深入探讨了当前用于从扫描文档中提取数据的技术,随后提供了简短的 Python 实践教程。我们还将研究当前市场上一些流行的解决方案,它们提供了该领域的最佳产品。
什么是数据提取?
数据提取是通过程序将非结构化数据转换为可解释信息以允许人类进一步处理数据的过程。这里我们列出了从扫描文档中提取的几种最常见的数据类型。
文本数据
从扫描文档提取数据中最常见也是最重要的任务是提取文本。这个过程虽然看似简单,但实际上非常困难,因为扫描文档通常以图像格式呈现。此外,提取方法高度依赖于文本类型。虽然文本在大多数情况下以密集的印刷格式存在,但从扫描不太好的文档或风格截然不同的手写信件中提取稀疏文本的能力同样重要。这样的过程将允许程序将图像转换为机器编码的文本,我们可以进一步将它们从非结构化数据(没有特定格式)组织为结构化数据以进行进一步分析。
表
表格形式是最流行的数据存储方法,因为该格式很容易用人眼解释。从扫描文档中提取表格的过程需要字符检测之外的技术 - 必须检测线条和其他视觉特征,以便执行正确的表格提取,并进一步将这些信息转换为结构化数据以供进一步计算。计算机视觉方法(在以下各节中详细描述)被大量用于实现高精度的表格提取。
键值对
我们在文档中经常采用的另一种数据存储格式是键值对(KVP)。
KVP 本质上是两个数据项——一个键和一个值——链接在一起。键用作要检索的值的唯一标识符。一个经典的 KVP 示例是字典,其中词汇表是键,相应的定义是值。这些对虽然通常不被注意,但实际上在文档中使用得非常频繁:调查中的问题,例如发票中项目的名称、年龄和价格,都隐含了 KVP。
然而,与表格不同的是,KVP 通常以未知的格式存在,有时甚至是部分手写的。例如,密钥可以预先打印在框中,而值可以在填写表格时手写。因此,即使对于最先进的设施和实验室来说,寻找自动执行 KVP 提取的底层结构也是一个持续的研究过程。
图
最后,提取或提取也非常重要 捕获数据 来自扫描文档中的图形。饼图和条形图等统计指标通常包含文档的关键信息。一个好的数据提取过程应该能够从图例和数字中推断出部分数据以供进一步使用。
想要从扫描文档中提取数据?给予纳米网™ 旋转以获得更高的准确性、更大的灵活性、后处理和广泛的集成!
数据提取背后的技术
数据提取围绕两个主要过程: 光学字符识别 (OCR) 其次是自然语言处理 (自然语言处理).
OCR提取是将文本图像转换为机器编码文本的过程,而后者是对单词进行分析以推断含义。通常与 OCR 一起使用的是其他计算机视觉技术,例如框和线检测,以提取上述数据类型(例如表格和 KVP)以进行更全面的提取。
数据提取管道背后的核心改进与深度学习的进步紧密相关,深度学习对计算机视觉和自然语言处理 (NLP) 领域做出了巨大贡献。
什么是深度学习?
深度学习,在人工智能时代的炒作背后发挥着重要作用,并在众多应用中不断被推到最前沿。在传统工程中,我们的目标是设计一个系统/功能,根据给定的输入生成输出;另一方面,深度学习依靠输入和输出来寻找中间关系,通过所谓的模型扩展到新的未见过的数据。 神经网络.
神经网络或多层感知器 (MLP),是一种受人类大脑学习方式启发的机器学习架构。该网络包含神经元,它们模仿生物神经元,并在给予不同信息时“激活”。神经元集形成层,多个层堆叠在一起形成网络,以服务于多种形式的预测目的(即图像分类或用于对象检测的边界框)。
在计算机视觉领域,一种神经网络变体被大量应用——卷积神经网络 (CNN)。 CNN 没有采用传统的层,而是采用通过张量(或高维向量)滑动的卷积核来进行特征提取。最终与传统网络层相伴,CNN 在图像相关任务中非常成功,并进一步形成了 OCR 提取和其他特征检测的基础。
另一方面,NLP 依赖于另一组网络,该网络专注于时间序列数据。与图像不同,其中一幅图像彼此独立,如果也考虑之前或之后的单词,则文本预测可以大大受益。这几年,一个网络家族,即长短期记忆 (LSTM),它将以前的结果作为输入来预测当前的结果。双边 LSTM 也经常被用来增强预测输出,同时考虑之前和之后的结果。然而,近年来,使用注意力机制的变压器概念开始兴起,因为它具有更高的灵活性,比处理顺序时间序列的传统网络能产生更好的结果。
数据提取的应用
数据提取的主要目标是将数据从非结构化文档转换为结构化格式,其中文本、图形和数据结构的高精度检索对于数值和上下文分析非常有帮助。这些分析非常有帮助,特别是对于企业:
企业
商业公司和大型组织每天要处理数千份格式相似的文书工作——大银行收到大量相同的申请,研究团队必须分析成堆的表格来进行统计分析。因此,从文档中提取数据的初始步骤的自动化显着减少了人力资源的冗余,并使工作人员能够专注于分析数据和审查应用程序,而不是键入信息。
- 验证应用程序 — 公司收到大量申请,无论是手写的还是仅通过申请表。大多数时候,这些申请可能会附有个人身份证件以供验证之用。护照或银行卡等身份证件的扫描件通常会批量出现,且格式相似。因此,编写良好的数据提取器可以快速将数据(文本、表格、图形、KVP)转换为机器可理解的文本,这可以大大减少这些任务的工时,并专注于应用程序选择而不是提取。
- 付款对账 — 付款对账是比较银行对账单以确保帐户之间的数字匹配的过程,该过程主要围绕从文档中提取数据 - 对于规模相当大且收入来源多样的公司来说,这是一个具有挑战性的问题。数据提取可以简化这一过程,使员工能够专注于错误数据并探索有关现金流的潜在欺诈事件。
- 统计分析 — 来自客户或实验参与者的反馈被企业和组织用来改进他们的产品和服务,全面的反馈评估通常需要统计分析。然而,调查数据可能以多种格式存在或隐藏在各种格式的文本之间。数据提取可以通过批量指出文档中的明显数据来简化流程,简化查找有用流程的过程,并最终提高效率。
- 分享过去的记录 — 从医疗保健到转换银行服务,大型行业经常需要新的客户信息,而这些信息可能已经存在于其他地方。例如,因搬家而更换医院的患者可能有预先存在的病历,这可能对新医院有帮助。在这种情况下,一个好的数据提取软件会派上用场,因为个人只需将扫描的历史记录带到新医院,以便他们自动填写所有信息。这不仅方便,还可以避免广泛的风险,特别是在医疗保健行业,重要的患者记录被忽视。
想要从扫描文档中提取数据?给予纳米网™ 旋转以获得更高的准确性、更大的灵活性、后处理和广泛的集成!
教程
为了更清楚地了解如何执行数据提取,我们展示了两组从扫描文档中执行数据提取的方法。
从头开始构建
可以通过 PyTesseract 引擎构建一个简单的数据提取 OCR 引擎,如下所示:
try: from PIL import Image
except ImportError: import Image
import pytesseract # If you don't have tesseract executable in your PATH, include the following:
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# Example tesseract_cmd = r'C:Program Files (x86)Tesseract-OCRtesseract' # Simple image to string
print(pytesseract.image_to_string(Image.open('test.png'))) # List of available languages
print(pytesseract.get_languages(config='')) # French text image to string
print(pytesseract.image_to_string(Image.open('test-european.jpg'), lang='fra')) # In order to bypass the image conversions of pytesseract, just use relative or absolute image path
# NOTE: In this case you should provide tesseract supported images or tesseract will return error
print(pytesseract.image_to_string('test.png')) # Batch processing with a single file containing the list of multiple image file paths
print(pytesseract.image_to_string('images.txt')) # Timeout/terminate the tesseract job after a period of time
try: print(pytesseract.image_to_string('test.jpg', timeout=2)) # Timeout after 2 seconds print(pytesseract.image_to_string('test.jpg', timeout=0.5)) # Timeout after half a second
except RuntimeError as timeout_error: # Tesseract processing is terminated pass # Get bounding box estimates
print(pytesseract.image_to_boxes(Image.open('test.png'))) # Get verbose data including boxes, confidences, line and page numbers
print(pytesseract.image_to_data(Image.open('test.png'))) # Get information about orientation and script detection
print(pytesseract.image_to_osd(Image.open('test.png'))) # Get a searchable PDF
pdf = pytesseract.image_to_pdf_or_hocr('test.png', extension='pdf')
with open('test.pdf', 'w+b') as f: f.write(pdf) # pdf type is bytes by default # Get HOCR output
hocr = pytesseract.image_to_pdf_or_hocr('test.png', extension='hocr') # Get ALTO XML output
xml = pytesseract.image_to_alto_xml('test.png')
有关代码的更多信息,您可以查看他们的官方 文档。
简而言之,代码从给定图像中提取文本和边界框等数据。虽然该引擎相当有用,但由于其强大的训练计算能力,其性能不如先进解决方案提供的引擎。
使用 Google 文档 API
def async_detect_document(gcs_source_uri, gcs_destination_uri):
"""OCR with PDF/TIFF as source files on GCS""" import json import re from google.cloud import vision from google.cloud import storage # Supported mime_types are: 'application/pdf' and 'image/tiff' mime_type = 'application/pdf' # How many pages should be grouped into each json output file. batch_size = 2 client = vision.ImageAnnotatorClient() feature = vision.Feature( type_=vision.Feature.Type.DOCUMENT_TEXT_DETECTION) gcs_source = vision.GcsSource(uri=gcs_source_uri) input_config = vision.InputConfig( gcs_source=gcs_source, mime_type=mime_type) gcs_destination = vision.GcsDestination(uri=gcs_destination_uri) output_config = vision.OutputConfig( gcs_destination=gcs_destination, batch_size=batch_size) async_request = vision.AsyncAnnotateFileRequest( features=[feature], input_config=input_config, output_config=output_config) operation = client.async_batch_annotate_files( requests=[async_request]) print('Waiting for the operation to finish.') operation.result(timeout=420) # Once the request has completed and the output has been # written to GCS, we can list all the output files. storage_client = storage.Client() match = re.match(r'gs://([^/]+)/(.+)', gcs_destination_uri) bucket_name = match.group(1) prefix = match.group(2) bucket = storage_client.get_bucket(bucket_name) # List objects with the given prefix. blob_list = list(bucket.list_blobs(prefix=prefix)) print('Output files:') for blob in blob_list: print(blob.name) # Process the first output file from GCS. # Since we specified batch_size=2, the first response contains # the first two pages of the input file. output = blob_list[0] json_string = output.download_as_string() response = json.loads(json_string) # The actual response for the first page of the input file. first_page_response = response['responses'][0] annotation = first_page_response['fullTextAnnotation'] # Here we print the full text from the first page. # The response contains more information: # annotation/pages/blocks/paragraphs/words/symbols # including confidence scores and bounding boxes print('Full text:n') print(annotation['text'])
最终,Google 的文档 AI 允许您从文档中高精度地提取大量信息。此外,该服务还提供特定用途,包括正常图像和自然图像的文本提取。
请参阅 此处 了解更多信息。
当前提供数据提取的解决方案
除了拥有用于文档数据提取的 API 的大公司之外,还有多种解决方案可以提供高精度 PDF文字识别 服务。我们提供了几种专门针对不同方面的 PDF OCR 选项,以及一些最近的研究原型,这些原型似乎提供了有希望的结果*:
*旁注:有多种 OCR 服务专门针对野外图像等任务。我们跳过了这些服务,因为我们目前只专注于 PDF 文档阅读。
- 谷歌的API — 作为最大的在线服务提供商之一,Google 凭借其开创性的计算机视觉技术在文档提取方面提供了令人惊叹的结果。如果使用量相当低,人们可以免费使用他们的服务,但随着 API 调用的增加,价格也会上涨。
- 深度读者 — Deep Reader 是在 ACCV Conference 2019 上发表的一项研究工作。它融合了多种最先进的网络架构来执行以下任务: 文件匹配、文本检索和图像去噪。还有其他功能,例如表和键值对提取,允许以有组织的方式检索和保存数据。
- 纳米网™ — 凭借技术精湛的深度学习团队,Nanonets™ PDF OCR 完全独立于模板和规则。因此,Nanets™ 不仅可以处理特定类型的 PDF,还可以应用于任何文档类型以进行文本检索。
想要从扫描文档中提取数据?给予纳米网™ 旋转以获得更高的准确性、更大的灵活性、后处理和广泛的集成!
结论
总之,本文对从扫描文档中提取数据进行了全面的解释,包括其背后的挑战以及此过程所需的技术。
提供了两种不同方法的教程,并且还提供了开箱即用的当前解决方案以供参考。
- 2019
- 关于
- 绝对
- 账号管理
- 精准的
- 增加
- 额外
- 高级
- 进步
- AI
- 算法
- 所有类型
- 已经
- 替代
- 分析
- 分析
- 另一个
- API
- APIs
- 应用领域
- 应用领域
- 的途径
- 架构
- 围绕
- 刊文
- 人造的
- 人工智能
- 关注我们
- 自动化
- 可使用
- AWS
- 背景
- 银行
- 银行
- 基础
- 作为
- 最佳
- 超越
- 最大
- 边界
- 盒子
- 建立
- 商业
- 企业
- 牌
- 例
- 现金
- 现金周转
- 一定
- 挑战
- 挑战
- 图表
- 结算
- 经典
- 云端技术
- 美国有线电视新闻网
- 码
- 如何
- 相当常见
- 公司
- 公司
- 完全
- 完成
- 全面
- 计算
- 一台
- 概念
- 研讨会 首页
- 信心
- 已联繫
- 经常
- 包含
- 贡献
- 方便
- 便捷
- 转换
- 核心
- 企业
- 相应
- 可以
- 关键
- 电流
- 目前
- 顾客
- 合作伙伴
- data
- 数据处理
- 数据存储
- 处理
- 描述
- 设计
- 细节
- 检测
- 不同
- 难
- 数字
- 文件
- 容易
- 效率
- 员工
- 发动机
- 工程师
- 特别
- 本质上
- 估计
- 等
- 评估
- 事件
- 例子
- 除
- 实验
- 探索
- 广泛
- 提取物
- 家庭
- 专栏
- 特征
- 反馈
- 字段
- 寻找
- 姓氏:
- 高度灵活
- 流
- 专注焦点
- 重点
- 重点
- 聚焦
- 以下
- 第一线
- 申请
- 格式
- 形式
- Free
- 法语
- 履行
- ,
- 进一步
- 目标
- 非常好
- 谷歌
- 更大的
- 非常
- 处理
- 动手
- 头
- 医疗保健
- 医疗保健行业
- 有帮助
- 此处
- 高
- 更高
- 高度
- 历史
- 医院
- 创新中心
- How To
- 但是
- HTTPS
- 人
- 人力资源
- 人类
- 图片
- 重要性
- 重要
- 改善
- 包括
- 包含
- 收入
- 增加
- 个人
- 个人
- 行业
- 行业中的应用:
- 信息
- 输入
- 灵感
- 房源搜索
- 问题
- IT
- 工作
- 键
- 键
- 实验室
- 语言
- 语言
- 大
- 领导
- 学习用品
- 学习
- Line
- 清单
- 长
- 机
- 机器学习
- 主要
- 多数
- 男子
- 方式
- 市场
- 匹配
- 匹配
- 医生
- 方法
- 更多
- 最先进的
- 最受欢迎的产品
- 移动
- 多
- 亦即
- 自然
- 需要
- 网络
- 网络
- 正常
- 数字
- 众多
- 提供
- 最多线路
- 提供
- 供品
- 优惠精选
- 官方
- 正在进行
- 在线
- 操作
- 附加选项
- 秩序
- 组织
- 举办
- 其他名称
- 业主
- 与会者
- 付款
- 执行
- 期间
- 个人
- 创举
- 热门
- 潜力
- 功率
- 预测
- 预测
- 当下
- 漂亮
- 以前
- 车资
- 过程
- 过程
- 处理
- 热销产品
- 曲目
- 训练课程
- 有希望
- 提供
- 优
- 目的
- 很快
- RE
- 读者
- 阅读
- 接收
- 和解
- 记录
- 减少
- 关于
- 关系
- 请求
- 要求
- 必须
- 需要
- 研究
- 资源
- 响应
- 成果
- 回报
- 风险
- 扫描
- 秒
- 服务
- 特色服务
- 集
- 几个
- 短
- 短期的
- 类似
- 简易
- 自
- 尺寸
- 软件
- 固体
- 解决方案
- 一些
- 专门
- 纺
- 国家的最先进的
- 声明
- 统计
- 存储
- 流
- 强烈
- 结构化
- 大量
- 成功
- 支持
- 调查
- 针对
- 任务
- 团队
- 技术
- 技术
- 专业技术
- test
- 世界
- 因此
- 数千
- 通过
- 次
- 时
- 一起
- 音
- 向
- 传统
- 产品培训
- 教程
- 类型
- 理解
- 独特
- 使用
- 平时
- 折扣值
- 各个
- 企业验证
- 查看
- 愿景
- 是否
- 而
- 中
- 也完全不需要
- 话
- 工作
- 工人
- 世界
- 将
- XML
- 年