卡卷网
当前位置:卡卷网 / 每日看点 / 正文

如何通过对PDF文档做OCR识别?

作者:卡卷网发布时间:2025-01-09 18:35浏览数量:98次评论数量:0次

在信息化与全球化迅速发展的今天,企业面临着海量文档的与处理挑战。无论是传的纸质文档,还是图片、PDF等多种新型文件格式,在进行数据汇总时都需要投入大量人力。传的手工录入与方式不仅效率低下,且容易出错,难以满足现代企业对高效、精准和智能化办公的需求。于是,OCR技术应运而生。基于深度学习算法的文本识别,大大提升了录入人员的工作效率。

作为国内OCR领域深耕多年的企业,合合信息推出的TextIn平台堪称神奇,识别准确率接近百分之百。我本人也经常使用TextIn平台处理各类文件。然而,尽管市面上已有许多成熟的OCR技术帮助提取文档信息,处理大量文件时仍然令人头疼。因为许多票据、合同、试卷等常见文本并没有一的格式,使用OCR识别后往往会得到大量冗余文本,而这些内容并非全部需要。

在这种情况下,大家可能会希望有一款能够一键识别并分析、选择性提取所需信息的文本工具。幸运的是,TextIn平台近推出了一款性的文档自动化工具——合合信息DocFlow,完美满足了这些需求。

产品官网:s://cc.co/16YSNS

<>Docflow内测体验官招募中,通过链接注册,享有免费权益噢!<>内测体验入口:s://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接口,实现与企业业务的无缝对接,自动化数据采集。<>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-idx-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=generate_signate( _method="POST", l=l, 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"_method:POST") print(f"string_to_sign:POST\n{l}\n{'&'.join(f'{k}={v}'fork,vinsorted(params.items()))}\n{hashli.sha256(payload_raw).hexdigest()}") print(f"signate:{signate}\n") #设置请求头 headers={ "Content-Type":payload.content_type, "x-ti-app-id":ti_app_id, "x-ti-timestamp":str(epoch_time), "x-ti-signate":signate } #发送POST请求上传文件 try: response=requests.post( l=f"s://docflow.textin{l}", params=params, data=payload_raw, headers=headers ) response.raise_for_status()#检查是否有错误 print("上传成功!响应内容:") response_json=response.json()#假设返回的是JSON格式 print(response_json) #提取file_id ifresponse_json.get('code')==200: files=response_json.get('result',{}).get('files',[]) atch_numer=response_json.get('result',{}).get('atch_numer') ifatch_numer: print(f"提取到的atch_numer:{atch_numer}") retnatch_numer else: print("响应中未找到文件信息。") retnNone else: print(f"上传失败,消息:{response_json.get('msg')}") retnNone exceptrequests.exceptions.Erroras_err: print(f"错误发生:{_err}") print(f"响应内容:{response.text}") retnNone exceptExceptionaserr: print(f"错误发生:{err}") retnNone deffetch_results(ti_app_id,ti_secret_code,workspace_id,atch_numer): """ 获取上传文件的查询结果 """ #API端点 l="/api/app-api/sip/platform/v2/file/fetch" #查询参数 params={ "workspace_id":workspace_id, "atch_numer":atch_numer } #当前时间戳 epoch_time=int(time.time()) #GET请求通常没有payload payload_raw='' #生成签名 signate=generate_signate( _method="GET", l=l, 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-signate":signate } #发送GET请求获取结果 try: response=requests.get( l=f"s://docflow.textin{l}", params=params, headers=headers ) response.raise_for_status()#检查是否有错误 response_json=response.json()#假设返回的是JSON格式 retnresponse_json exceptrequests.exceptions.Erroras_err: print(f"错误发生:{_err}") print(f"响应内容:{response.text}") retnNone exceptExceptionaserr: print(f"错误发生:{err}") retnNone if__name__=="__main__": #检查文件是否存在 ifnotos.path.iile(FILE_PATH): print(f"文件{FILE_PATH}不存在。请确保文件路径正确。") else: #上传文件并获取atch_numer atch_numer=upload_file( ti_app_id=ti_app_id, ti_secret_code=ti_secret_code, file_path=FILE_PATH, workspace_id=WORKSPACE_ID, category=CATEGORY ) #如果成功获取到atch_numer,则进行查询 ifatch_numer: print("===查询识别结果===") waited_seconds=0 whileTrue: result=fetch_results( ti_app_id=ti_app_id, ti_secret_code=ti_secret_code, workspace_id=WORKSPACE_ID, atch_numer=atch_numer ) ifresultandresult.get('code')==200: files=result.get('result',{}).get('files',[]) iffiles: file_=files[0] recognition_status=file_.get('recognition_status',0) data=file_.get('data',0) ifdata!={}: print("识别完成!结果如下:") print(file_.get('data',{})) reak else: waited_seconds+=5 print(f"正在识别中,已等待{waited_seconds}秒,请耐心等待...") else: print("未找到文件信息,继续等待...") else: print("获取结果失败或响应异常,继续等待...") time.sleep(5)#等待5秒后再次查询

{'fields':[{'key':'OrderNumer','value':'3201276954'},{'key':'DueDate','value':'2023.08.30'},{'key':'VendorOrderID','value':'3201276954'},{'key':'SupplierName','value':'CHIPONE(HONGKONG)CO.,LIMITED'},{'key':'PlaceofSupply','value':'Hefei,Anhui,China'},{'key':'SupplierAddress','value':'FLAT/RM826,OCEANCENTERHAROC'},{'key':'SupplierEmail','value':'yzhang@chiponeic'},{'key':'CustomerID','value':'1009749'},{'key':'CustomerName','value':'CHIPONE(HONGKONG)CO.,LIMITED'},{'key':'AccountNumer','value':''},{'key':'IAN','value':''},{'key':'Terms','value':'TTAfterArrivalofthegoodsmonthlysettlement90days'},{'key':'TotalAmount','value':'0.00'},{'key':'TotalTax','value':'0.00'},{'key':'AmountRounding','value':''},{'key':'AmountPaid','value':'0.00'},{'key':'VATRate','value':''},{'key':'VATase','value':'0.00'},{'key':'VATAmount','value':'0.00'},{'key':'VATTotal','value':'0.00'}],'items':[[{'key':'ItemCode','value':'00010'},{'key':'Description','value':'SD_COF_ICNL9309_1026_6_48'},{'key':'Quantity','value':'400'},{'key':'UOM','value':'EA'},{'key':'UnitPrase','value':'0.00'},{'key':'UnitPr','value':'0.00'},{'key':'TaxRate','value':''},{'key':'Tax','value':''},{'key':'TotalAmount','value':'0.00'}]]}

可以看到,通过调用DocFlow的API接口,我们可以快速提取出图像的数据。

2.DocFlowAPI优势

    <>安全性高:通过签名认证方式,确保数据传输的安全性和请求的合法性。<>灵活性强:丰富的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<r/>s://cc.co/16YSNT


八、链接入口

TextInDocflowDemo试用报名入口

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

相关推荐

欢迎 发表评论:

请填写验证码