在信息化与全球化迅速发展的今天,企业面临着海量文档的与处理挑战。无论是传的纸质文档,还是图片、PDF等多种新型文件格式,在进行数据汇总时都需要投入大量人力。传的手工录入与方式不仅效率低下,且容易出错,难以满足现代企业对高效、精准和智能化办公的需求。于是,OCR技术应运而生。基于深度学习算法的文本识别,大大提升了录入人员的工作效率。
作为国内OCR领域深耕多年的企业,合合信息推出的TextIn平台堪称神奇,识别准确率接近百分之百。我本人也经常使用TextIn平台处理各类文件。然而,尽管市面上已有许多成熟的OCR技术帮助提取文档信息,处理大量文件时仍然令人头疼。因为许多票据、合同、试卷等常见文本并没有一的格式,使用OCR识别后往往会得到大量冗余文本,而这些内容并非全部需要。
在这种情况下,大家可能会希望有一款能够一键识别并分析、选择性提取所需信息的文本工具。幸运的是,TextIn平台近推出了一款性的文档自动化工具——合合信息DocFlow,完美满足了这些需求。
DocFlow,顾名思义,是一款文本处理的工作流,传的OCR识别只有文本录入和返回结果这两个环节,而DocFlow则是将一切能够提升我们实践效果的功能全部了起来,让我们能够更省心的获得我们想要的结果。如,下面是一张机动车的照片:
在DocFlow出现之前,通常我们会选择先对这个车票照片进行OCR识别,进而得出上面所有的文本信息。但是得到的信息除了识别精度很低以外,本身的排序也是非常混乱,几乎无法使用,如下面这种效果:
这种效果是我们完全不能接受的,我们很需要一款能够精准识别,并且按照具体对应的条目返回给我们的OCR神器,也许在不久前这种想被嘲笑痴人说梦,但如今DocFlow帮助我们轻松实现了。我们访问DocFlow的产品体验界面,将照片上传,可以看到右面显示出了精准识别出的且一一对应的明细内容,不仅没有遗漏,而且也没有识别错误,这种识别精度的是强的可怕!
环节 | 步骤 | 描述 |
采(采集) | 影像采集 | 通过多渠道集成,一归集企业影像数据。 |
管() | 影像分类 | 基于用户、影像类型、安全级别等维度进行影像分级分类。 |
算(计算) | 影像识别 | 利用AI技术实现影像结构化信息的识别与抽取。 |
审() | 影像审核 | 通过元数据、文本内容等建立深层次影像关联,提升数据的可用性。 |
用(应用) | 影像应用 | 为报账、CMS、资产等业务提供影像采集、搜索、调阅服务。 |
二、DocFlow作流程
下面,我们详细讲述一下DocFlow作流程的六个阶段:
1.输入文档
DocFlow支持多种方式导入文档,满足不同企业的需求:
<>扫描上传>:通过扫描设备批量导入纸质单据,支持多种文件格式(如OFD、PNG、JPG、JPEG、DOC、DOCX、XLSX、XLS等)。<>邮箱收取>:通过邮箱助手自动导入邮件中的附件,简化邮件文档的流程。<>API调用>:通过开放的API接口,实现与企业业务的无缝对接,自动化数据采集。<>TP定时、共享、OneDriver、Sharepoint等>:支持多种数据采集方式,确保数据获取的灵活性和全面性。<>RPA接入>:对于无法开通接口的业务,支持通过RPA工具获取影像数据,与DocFlow实现接口对接。
2.文件质量优化
在文档采集过程中,DocFlow通过先进的图像处理技术,优化文档图像质量,提升后续识别的准确性和效率:
<>边缘检测与切边压缩>:自动裁剪文档边缘,减少无关信息,提高图像质量。<>增强锐化与曲面矫正>:提升图像清晰度,纠正文档倾斜,确保文字的可读性。<>阴影消除与去摩尔纹>:去除文档中的阴影和干扰线条,优化图像背景。<>多图切分与水印去除>:支持将多页文档拆分为单页图像,自动去除水印,保证数据的完整性。
3.文档分类
DocFlow内置强大的文档分类功能,支持自动将文档归类到相应的类别中,减少手工分类的工作量:
<>自动分类>:根据预设的分类模型自动识别文档类型,支持国内票、海外票等多种票据类型的自动分类。<>灵活配置>:用户可通过上传样本文件或设置分类关键字,自定义分类模型,满足不同业务需求。<>无定义分类处理>:对于无法自动分类的文档,将其归类到“undefined”或“other”类别,用户可手工调整分类规则,提高分类准确性。
4.数据导出应用
DocFlow支持将结构化的数据导出到指定的业务中,支持多种数据格式和接口:如XML、JSON、EXCEL等格式。
5.人工确认验证
在必要时,DocFlow提供人工审核功能,确保数据的准确性和完整性:
<>详情页面展示>:提供文件列表、内容预览窗口、KV字段抽取内容和表格信息抽取内容四部分,便于用户查看和核对。<>分类信息核对>:用户可核对文档分类是否正确,必要时可手动更正分类。<>抽取信息核对>:支持内容定位与核对、展示隐信息、内容快速选择、自定义添加字段等功能,确保数据的准确性。<>业务审核作>:用户可对文件进行确认、拒绝或推迟处理,支持多级审核流程,确保数据的合法性和合规性。
6.抽取定位显示
DocFlow通过直观的方式展示抽取的关键字段,支持用户自定义字段和调整抽取结果:
<>字段定位>:自动框选出字段所在位置,用户可直观查看和编辑。<>自定义字段>:用户可根据业务需求添加或修改字段,基于语义理解自动抽取数据。<>多页文档支持>:支持跨页字段的抽取,确保数据的完整性和准确性。
三、DocFlow在线体验
为了帮助用户更好地体验DocFlow的强大功能,TextIn现在招募内测用户,添加TextIn福利官,免费领取1000次试用名额!(名额有限,先加先得)<>报名入口:s://cc.co/16YSNT>下面,我们开始实际体验一下,以某广告合同为例。
上传文件
我们先上传合同图片,使用通用合同的模板,可以看到右侧出现了有很多DocFlow解析出来的信息。
仔细观察信息我们不难发现,由于通用合同模板的局限性,我们没有分别读取甲方和乙方各自的信息。这时候,就需要我们去创建一个新的针对性的模板。
新增类别
创建新类别:甲乙双方合同
点击右侧自动填充,一键识别关键字段,基本上可以做到全覆盖,如果还有需要添加的可以手动点击文本处添加,字段添加后效果如图。
完成后点击保存。首页在我们创建的新类别里重写上传合同。
使用新类别识别
可以看到识别结果的针对性增强了很多。
如果有些我们需要但是没有出现在模板里的字段,我们可以点击新增字段来进行框选。
当我们认为识别无误了,我们点击确认。这篇文档的核对状态会更新为已确认。
除了确认之外,也可以推迟处理或者驳回。
四、API调用DocFlow
DocFlow提供了丰富的API接口,支持开发者通过编程方式与DocFlow进行集成,实现自动化的数据采集和处理。目前提供的三个接口如下:
上传文件POST获取文件处理结果列表GET更新文件处理结果POST
调用接口需要配置使用TextIn账号。请在TextIn上注册后,在TextIn首页-账户与充值-账号与开发者信息
页面获取x-ti-app-id
和x-ti-secret-code
,用于请求认证。
1.DocFlowAPI综合案例
我们结合现有的接口,实现一个从上传文件到获取识别结果的综合案例。返回值如下:
#app.py
fromrequests_toolelt.multipart.encoderimportMultipartEncoder
importhashli
importhmac
importtime
importrequests
importos
importjson
#配置您的认证信息
ti_app_id="971357*************ef0f5c"
ti_secret_code="2d556********************dde26a0"
#配置参数
FILE_PATH="sample.pdf"#要上传的文件路径
WORKSPACE_ID="1851520358480039936"#替换为实际的workspace_id
CATEGORY="采购订单"#替换为实际的category
defgenerate_signate(_method,l,params,payload_raw,ti_secret_code,epoch_time):
"""
生成签名的函数
"""
#生成签名密钥
signing_key=hmac.new(ti_secret_code.encode('utf-8'),str(epoch_time).encode('utf-8'),hashli.sha256).digest()
#计算payload的哈希值
ifpayload_raw:
payload_hash=hashli.sha256(payload_raw).hexdigest()
else:
payload_hash=hashli.sha256('').hexdigest()
#构建字符串以进行签名
sorted_params='&'.join(f'{k}={v}'fork,vinsorted(params.items()))
string_to_sign=f"{_method}\n{l}\n{sorted_params}\n{payload_hash}"
#生成签名
signate=hmac.new(signing_key,string_to_sign.encode('utf-8'),hashli.sha256).hexdigest()
retnsignate
defupload_file(ti_app_id,ti_secret_code,file_path,workspace_id,category):
"""
上传文件到DocFlow接口,并返回file_id
"""
#API端点
l="/api/app-api/sip/platform/v2/file/upload"
#查询参数
params={
"workspace_id":workspace_id,
"category":category
}
#当前时间戳
epoch_time=int(time.time())
#构建multipart/form-data的payload
payload=MultipartEncoder(
fields={
"file":(os.path.asename(file_path),open(file_path,"r"),"application/pdf"),
}
)
payload_raw=payload.to_string()
#生成签名
signate=