在信息化与全球化迅速发展的本日,企业面临着海量文档的管理与处理寻衅。无论是传统的纸质文档,还是图片、PDF等多种新型文件格式,在举行数据汇总时都必要投入大量人力。传统的手工录入与管理方式不仅效率低下,且轻易出错,难以满足现代企业对高效、精准和智能化办公的需求。于是,OCR技术应运而生。基于深度学习算法的文本识别,大大提升了录入职员的工作效率。
作为国内OCR领域深耕多年的企业,合合信息推出的TextIn平台堪称神奇,识别准确率接近百分之百。我本人也经常利用TextIn平台处理各类文件。然而,尽管市面上已有很多成熟的OCR技术帮助提取文档信息,处理大量文件时仍旧令人头疼。因为很多单子、合同、试卷等常见文本并没有统一的格式,利用OCR识别后每每会得到大量冗余文本,而这些内容并非全部必要。
在这种情况下,大家可能会希望有一款能够一键识别并分析、选择性提取所需信息的文本工具。幸运的是,TextIn平台近日推出了一款革命性的文档自动化工具——合合信息DocFlow,完善满足了这些需求。
产品官网:https://cc.co/16YSNS
Docflow内测体验官招募中,通过链接注册,享有免费权益噢!
内测体验入口:https://cc.co/16YSNT
一、DocFlow产品简介
DocFlow,顾名思义,是一款文本处理的工作流系统,传统的OCR识别只有文本录入和返回结果这两个环节,而DocFlow则是将一切能够提升我们实践效果的功能全部集合了起来,让我们能够更省心的得到我们想要的结果。
好比,下面是一张机动车销售发票的照片:
在DocFlow出现之前,通常我们会选择先对这个车票照片举行OCR识别,进而得出上面所有的文本信息。但是得到的信息除了识别精度很低以外,本身的排序也是非常混乱,险些无法利用,好比下面这种效果:
这种效果是我们完全不能接受的,我们很必要一款能够精准识别,并且按照具体对应的条目返回给我们的OCR神器,也许在不久前这种想法会被嘲笑痴人说梦,但如今DocFlow帮助我们轻松实现了。
我们访问DocFlow的产品体验界面,将发票照片上传,可以看到右面显示出了精准识别出的且一一对应的明细内容,不仅没有遗漏,而且也没有识别错误,这种识别精度真的是强的可怕!
放大点,给大伙看看~
(已对敏感信息举行隐蔽处理)
然后这还只是DocFlow的其中一小段功能,DocFlow可不仅仅是OCR,而是一个成熟的一站式工作流产品。
DocFlow 是 TextIn 旗下的一款先进的文档自动化处理工具,专为企业提供文档分类与关键要素提取的一站式解决方案。依托于 TextIn 行业领先的文档解析与理解能力,DocFlow 能够轻松处理全球范围内各类文档类型与复杂版式,无论是单子、卡证,还是合同、文件,均可实现高精度的分类与关键要素提取,并快速整合至业务流程中。
DocFlow 通过五个焦点环节构建一个统一的 ”采、管、算、审、用” 影像布局化能力服务体系:
环节
| 步骤
| 描述
| 采(采集)
| 影像采集
| 通过多渠道集成,统一归集企业影像数据。
| 管(管理)
| 影像分类
| 基于用户、影像类型、安全级别等维度举行影像分级分类。
| 算(计算)
| 影像识别
| 利用AI技术实现影像布局化信息的识别与抽取。
| 审(检察)
| 影像考核
| 通过元数据、文本内容等建立深层次影像关联,提升数据的可用性。
| 用(应用)
| 影像应用
| 为报账、CMS、资产管理等业务系统提供影像采集、搜刮、调阅服务。
|
二、DocFlow操作流程
下面,我们具体讲述一下DocFlow操作流程的六个阶段:
1. 输入文档
DocFlow支持多种方式导入文档,满足不同企业的需求:
功能名称功能描述扫描上传通过扫描设备批量导入纸质单据,支持多种文件格式(如OFD、PNG、JPG、JPEG、DOC、DOCX、XLSX、XLS等)。邮箱收取通过邮箱助手自动导入邮件中的附件,简化邮件文档的管理流程。API调用通过开放的API接口,实现与企业业务系统的无缝对接,自动化数据采集。SFTP定时、SMB共享、OneDrive、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次试用名额!(名额有限,先加先得)
报名入口:https://cc.co/16YSNT
下面,我们开始实际体验一下,以某广告合同为例。
1. 上传文件
上传合同图片,利用通用合同的模板,可以看到右侧出现了DocFlow解析出来的信息。
细致观察信息我们不难发现,由于通用合同模板的范围性,我们没有分别读取甲方和乙方各自的信息。这时间,就必要我们去创建一个新的针对性的模板。
2. 新增种别
创建新种别:甲乙双方合同
点击右侧自动填充,一键识别关键字段,基本上可以做到全覆盖,如果尚有必要添加的可以手动点击文本处添加,字段添加后效果如图。
完成后点击保存。首页在我们创建的新种别里重写上传合同。
3. 利用新种别识别
可以看到识别结果的针对性增强了很多。
如果有些我们必要但是没有出现在模板里的字段,我们可以点击新增字段来举行框选。
当我们认为识别无误了,我们点击确认。这篇文档的核对状态会更新为已确认。
除了确认之外,也可以推迟处理大概驳回。
四、API调用DocFlow
DocFlow提供了丰富的API接口,支持开发者通过编程方式与DocFlow举行集成,实现自动化的数据采集和处理。
现在提供的三个接口如下:
- 上传文件POST
- 获取文件处理结果列表GET
- 更新文件处理结果POST
调用接口必要设置利用TextIn账号。请在TextIn上注册后,在TextIn首页-账户与充值-账号与开发者信息页面获取 x-ti-app-id 和 x-ti-secret-code,用于请求认证。
1. DocFlow API综合案例
我们结合现有的接口,实现一个从上传文件到获取识别结果的综合案例。
- from requests_toolbelt.multipart.encoder import MultipartEncoder
- import hashlib
- import hmac
- import time
- import requests
- import os
- import json
- # 配置您的认证信息
- ti_app_id = "97135787*****************ef0f5c"
- ti_secret_code = "2d5b5b************************dde26a0"
- # 配置参数
- FILE_PATH = "sample.pdf" # 要上传的文件路径
- WORKSPACE_ID = "1851520358480039936" # 替换为实际的workspace_id
- CATEGORY = "采购订单" # 替换为实际的category
- def generate_signature(http_method, url, params, payload_raw, ti_secret_code, epoch_time):
- """
- 生成签名的函数
- """
- # 生成签名密钥
- signing_key = hmac.new(ti_secret_code.encode('utf-8'), str(epoch_time).encode('utf-8'), hashlib.sha256).digest()
-
- # 计算payload的哈希值
- if payload_raw:
- payload_hash = hashlib.sha256(payload_raw).hexdigest()
- else:
- payload_hash = hashlib.sha256(b'').hexdigest()
-
- # 构建字符串以进行签名
- sorted_params = '&'.join(f'{k}={v}' for k, v in sorted(params.items()))
- string_to_sign = f"{http_method}\n{url}\n{sorted_params}\n{payload_hash}"
-
- # 生成签名
- signature = hmac.new(signing_key, string_to_sign.encode('utf-8'), hashlib.sha256).hexdigest()
-
- return signature
- def upload_file(ti_app_id, ti_secret_code, file_path, workspace_id, category):
- """
- 上传文件到DocFlow接口,并返回file_id
- """
- # API 端点
- url = "/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.basename(file_path), open(file_path, "rb"), "application/pdf"),
- }
- )
-
- payload_raw = payload.to_string()
-
- # 生成签名
- signature = generate_signature(
- http_method="POST",
- url=url,
- params=params,
- payload_raw=payload_raw,
- ti_secret_code=ti_secret_code,
- epoch_time=epoch_time
- )
-
- # 打印调试信息
- print("=== 文件上传签名信息 ===")
- print(f"epoch_time: {epoch_time}")
- print(f"http_method: POST")
- print(f"string_to_sign: POST\n{url}\n{'&'.join(f'{k}={v}' for k, v in sorted(params.items()))}\n{hashlib.sha256(payload_raw).hexdigest()}")
- print(f"signature: {signature}\n")
-
- # 设置请求头
- headers = {
- "Content-Type": payload.content_type,
- "x-ti-app-id": ti_app_id,
- "x-ti-timestamp": str(epoch_time),
- "x-ti-signature": signature
- }
-
- # 发送POST请求上传文件
- try:
- response = requests.post(
- url=f"https://docflow.textin.com{url}",
- params=params,
- data=payload_raw,
- headers=headers
- )
- response.raise_for_status() # 检查是否有HTTP错误
- print("上传成功!响应内容:")
- response_json = response.json() # 假设返回的是JSON格式
- print(response_json)
-
- # 提取file_id
- if response_json.get('code') == 200:
- files = response_json.get('result', {}).get('files', [])
- batch_number = response_json.get('result', {}).get('batch_number')
- if batch_number:
- print(f"提取到的batch_number: {batch_number}")
- return batch_number
- else:
- print("响应中未找到文件信息。")
- return None
- else:
- print(f"上传失败,消息: {response_json.get('msg')}")
- return None
- except requests.exceptions.HTTPError as http_err:
- print(f"HTTP错误发生: {http_err}")
- print(f"响应内容: {response.text}")
- return None
- except Exception as err:
- print(f"其他错误发生: {err}")
- return None
- def fetch_results(ti_app_id, ti_secret_code, workspace_id, batch_number):
- """
- 获取上传文件的查询结果
- """
- # API 端点
- url = "/api/app-api/sip/platform/v2/file/fetch"
-
- # 查询参数
- params = {
- "workspace_id": workspace_id,
- "batch_number": batch_number
- }
-
- # 当前时间戳
- epoch_time = int(time.time())
-
- # GET请求通常没有payload
- payload_raw = b''
-
- # 生成签名
- signature = generate_signature(
- http_method="GET",
- url=url,
- params=params,
- payload_raw=payload_raw,
- ti_secret_code=ti_secret_code,
- epoch_time=epoch_time
- )
-
- # 设置请求头
- headers = {
- "x-ti-app-id": ti_app_id,
- "x-ti-timestamp": str(epoch_time),
- "x-ti-signature": signature
- }
-
- # 发送GET请求获取结果
- try:
- response = requests.get(
- url=f"https://docflow.textin.com{url}",
- params=params,
- headers=headers
- )
- response.raise_for_status() # 检查是否有HTTP错误
- response_json = response.json() # 假设返回的是JSON格式
- return response_json
- except requests.exceptions.HTTPError as http_err:
- print(f"HTTP错误发生: {http_err}")
- print(f"响应内容: {response.text}")
- return None
- except Exception as err:
- print(f"其他错误发生: {err}")
- return None
- if __name__ == "__main__":
-
- # 检查文件是否存在
- if not os.path.isfile(FILE_PATH):
- print(f"文件 {FILE_PATH} 不存在。请确保文件路径正确。")
- else:
- # 上传文件并获取batch_number
- batch_number = upload_file(
- ti_app_id=ti_app_id,
- ti_secret_code=ti_secret_code,
- file_path=FILE_PATH,
- workspace_id=WORKSPACE_ID,
- category=CATEGORY
- )
-
- # 如果成功获取到batch_number,则进行查询
- if batch_number:
- print("=== 查询识别结果 ===")
- waited_seconds = 0
- while True:
- result = fetch_results(
- ti_app_id=ti_app_id,
- ti_secret_code=ti_secret_code,
- workspace_id=WORKSPACE_ID,
- batch_number=batch_number
- )
- if result and result.get('code') == 200:
- files = result.get('result', {}).get('files', [])
- if files:
- file_info = files[0]
- recognition_status = file_info.get('recognition_status', 0)
- data = file_info.get('data', 0)
- if data != {}:
- print("识别完成!结果如下:")
- print(file_info.get('data', {}))
- break
- else:
- waited_seconds += 5
- print(f"正在识别中,已等待{waited_seconds}秒,请耐心等待...")
- else:
- print("未找到文件信息,继续等待...")
- else:
- print("获取结果失败或响应异常,继续等待...")
-
- time.sleep(5) # 等待5秒后再次查询
复制代码 返回值如下:
- {'fields': [{'key': 'Order Number', 'value': '3201276954'}, {'key': 'Due Date', 'value': '2023.08.30'}, {'key': 'Vendor Order ID', 'value': '3201276954'}, {'key': 'Supplier Name', 'value': 'CHIPONE (HONG KONG) CO., LIMITED'}, {'key': 'Place of Supply', 'value': 'Hefei, Anhui, China'}, {'key': 'Supplier Address', 'value': 'FLAT/RM 826, OCEAN CENTER HARBOUR C'}, {'key': 'Supplier Email', 'value': 'yzhang@chiponeic.com'}, {'key': 'Customer ID', 'value': '1009749'}, {'key': 'Customer Name', 'value': 'CHIPONE (HONG KONG) CO., LIMITED'}, {'key': 'Account Number', 'value': ''}, {'key': 'IBAN', 'value': ''}, {'key': 'Terms', 'value': 'TT After Arrival of the goods monthly settlement 90 days'}, {'key': 'Total Amount', 'value': '0.00'}, {'key': 'Total Tax', 'value': '0.00'}, {'key': 'Amount Rounding', 'value': ''}, {'key': 'Amount Paid', 'value': '0.00'}, {'key': 'VAT Rate', 'value': ''}, {'key': 'VAT Base', 'value': '0.00'}, {'key': 'VAT Amount', 'value': '0.00'}, {'key': 'VAT Total', 'value': '0.00'}], 'items': [[{'key': 'Item Code', 'value': '00010'}, {'key': 'Description', 'value': 'SD_COF_ICNL9309_1026_6_48'}, {'key': 'Quantity', 'value': '400'}, {'key': 'UOM', 'value': 'EA'}, {'key': 'Unit Price Base', 'value': '0.00'}, {'key': 'Unit Price', 'value': '0.00'}, {'key': 'Tax Rate', 'value': ''}, {'key': 'Tax', 'value': ''}, {'key': 'Total Amount', 'value': '0.00'}]]}
复制代码 可以看到,通过调用DocFlow的API接口,我们可以快速提取出图像的数据。
2. DocFlow API优势
- 安全性高:通过签名认证方式,确保数据传输的安全性和请求的正当性。
- 机动性强:丰富的API接口,支持多种数据采集和处理需求,满足不同业务场景。
- 易于集成:提供具体的API文档和示例代码,帮助开发者快速集成DocFlow功能。
五、丰富的DocFlow插件生态
DocFlow不仅具备强大的焦点功能,还通过丰富的插件生态,进一步拓展了其应用范围和功能深度,满足不同企业的多样化需求。
1. 插件扩展
DocFlow提供多种插件,增强其影像采集与处理能力:
功能名称功能描述邮箱助手自动导入邮件中的附件,简化邮件文档的管理流程,提升工作效率。扫描插件支持批量快速采集单据,提升扫描效率,减少手工操作。文件导入自动导入邮件中的文件附件,确保数据的同等性和完整性。数据库导入支持从数据库批量采集数据,确保数据的统一性和准确性。接口导入通过设置接口自动导入数据,提升数据采集的自动化水平,减少手工干预。 2. 功能插件
除了根本的影像采集插件,DocFlow还提供多种功能插件,满足不同业务场景的需求:
- 边沿检测与切边压缩:自动裁剪文档边沿,减少无关信息,提高图像质量。
- 增强锐化与曲面矫正:提升图像清楚度,纠正文档倾斜,确保笔墨的可读性。
- 阴影消除与去摩尔纹:去除文档中的阴影和干扰线条,优化图像背景。
- 多图切分与水印去除:支持将多页文档拆分为单页图像,自动去除水印,保证数据的完整性。
3. 定制化插件
针对特定行业和业务需求,DocFlow还支持定制化插件开发:
- 行业特定插件:如金融、物流、制造等行业的专用插件,满足行业特定的文档处理需求。
- 自定义功能插件:企业可根据自身需求,开发自定义功能插件,扩展DocFlow的应用范围和功能深度。
通过丰富的插件生态,DocFlow能够机动顺应不同企业和行业的多样化需求,提供全面的文档自动化解决方案。
六、DocFlow行业案例
DocFlow凭借其强大的功能和机动的设置,已在多个行业乐成应用,显著提升了企业的办公效率和管理水平。以下是两个典型的行业案例:
1. 单子自动化
某国产新能源汽车企业在应用DocFlow后,乐成冲破了单子处理过程中语言和版式的障碍,实现了从传统手工录入到全流程自动化管理的变化。通过DocFlow的高效识别与抽取,企业在全球化“深海”市场中得到了深度赋能,持续提升了业务处理效率。
应用成果:
- 效率提升:单子处理时间从传统的小时级别缩短至分钟级别,显著提高了处理速率。
- 准确率提升:自动化识别错误率趋近于零,确保数据的准确性和可靠性。
- 资本低沉:减少了大量的人工录入和管理资本,提升了企业的运营效率。
- 全球化支持:支持多语言和多版式单子,满足企业全球化业务的需求。
2. 物流集散
某大型物流公司在传统录单业务流程中,手工录入提货单信息耗时耗力,且易出错。引入DocFlow后,系统能够智能识别并抽取提货单中的关键字段信息及印章信息,自动录入WMS系统。录单员仅需举行复核确认,整个流程大幅简化,工作效率提升了80%。
应用成果:
- 工作效率提升:团体工作效率相较于流程改造前提升了80%,显著缩短了录单时间。
- 错误率低沉:自动化识别减少了人工录入中的错误,提高了数据的准确性。
- 流程简化:从提货单扫描、信息抽取到系统录入,实现了流程的全面自动化。
- 员工满意度提升:减少了重复性劳动,提升了员工的工作满意度和工作效率。
七、总结
DocFlow作为TextIn推出的高精度文档自动化处理工具,以其强大的识别与抽取能力、机动的集成方式和丰富的插件生态,已成为浩繁企业提升办公效率、实现智能化管理的得力助手。无论是单子自动化、物流集散,还是金融信贷业务,DocFlow都能通过其卓越的技术能力,帮助企业实现业务流程的全面优化和升级,真正实现办公效率的百倍提升。随着产品的不断优化和市场的持续扩展,DocFlow必将在智能文档管理领域占据更加告急的职位,助力企业在信息化浪潮中稳步前行。
内测试用官招募中!或可添加官方福利官报名,免费利用Docflow |