在数字化办公日益普及的今天,文档信息提取成为了企业和个人处理大量非结构化数据的重要环节。然而,传统的OCR技术在处理复杂文档时常常面临准确率低、格式混乱等问题,尤其是在处理敏感信息时,数据隐私和安全性也难以保障。为了解决这些痛点,NanoNets团队开发了一款开源的本地化工具——Docext,它利用视觉语言模型(VLM)实现无需OCR的结构化信息提取,为企业和开发者提供了一种高效、安全且灵活的解决方案。
Docext是一个无需OCR的文档信息提取工具,由NanoNets团队开发并开源。它利用视觉语言模型(VLMs)从文档图像中准确识别和提取字段数据和表格信息,支持发票、护照等多种常见文档类型。Docext旨在通过本地部署的方式,保障数据隐私,同时提供自定义字段、表格提取、多页文档支持和REST API集成等功能,全面提升文档处理的效率和安全性。
Docext的核心在于其利用的视觉语言模型(VLMs)。与传统的OCR技术不同,VLMs能够直接从文档图像中提取信息,而无需先进行字符识别。这种模型通过结合视觉信息和语言理解能力,能够更准确地识别文档中的结构化信息,例如关键字段和表格数据。VLMs的优势在于其能够理解文档的整体布局和语义,从而在提取信息时保持更高的准确性和稳定性。
为了评估不同模型在文档处理任务中的性能,Docext提供了一个智能文档处理排行榜。该排行榜涵盖了七个关键的文档智能挑战,包括关键信息提取(KIE)、视觉问答(VQA)、光学字符识别(OCR)、文档分类、长文档处理、表格提取和置信度评分校准。通过这些任务的评估,研究人员和实践者可以更全面地了解模型在不同场景下的表现,从而选择最适合其需求的模型。
Docext能够从各种文档中提取关键字段信息和表格数据,同时保持原始结构。无论是发票中的金额、日期,还是护照中的姓名、国籍,Docext都能够准确识别并提取出来。此外,它还支持从复杂表格中提取结构化数据,即使表格跨越多页,Docext也能够自动识别并提取跨页内容。
Docext提供了高度的灵活性,用户可以根据自己的需求定义自定义字段,或者使用内置的常见文档类型模板,如发票、护照等。这些模板已经经过优化,能够快速启动并满足大多数用户的需求。同时,用户还可以根据实际情况动态添加或删除字段/列,以满足个性化的需求。
为了帮助用户评估提取信息的可靠性,Docext提供了置信度评分功能。每个提取的字段和表格数据都会附带一个置信度评分,用户可以根据这个评分来判断数据的准确性,从而在必要时进行人工审核或进一步处理。
在处理长文档时,Docext能够自动处理多页内容,无需用户手动分页。这使得它特别适合处理合同、研究报告等复杂的长文档,能够有效地提高工作效率。
Docext支持在Linux和macOS系统上本地部署,确保数据完全在本地处理,不会上传到云端。这种部署方式极大地保障了数据的隐私和安全性,特别适合处理敏感信息。
Docext提供了RESTful API接口,可以轻松集成到现有的系统或应用程序中。通过API,用户可以程序化地访问文档提取功能,实现自动化处理。
Docext可以广泛应用于企业的自动化流程中,例如自动处理发票、收据、合同等文档,减少人工干预,提高工作效率。通过REST API集成,Docext可以轻松集成到现有的企业系统中,实现文档处理的自动化。
在数据录入和分析方面,Docext能够从复杂表格中提取结构化数据,为数据分析和决策提供支持。它支持多种文档类型,能够快速提取关键信息,提高数据处理的速度和准确性。
在出入境管理场景中,Docext可以快速提取护照、签证等证件的关键信息,简化出入境流程。其本地化部署的特性确保了数据的安全性和隐私性,特别适合处理敏感信息。
对于长文档,如研究报告、法律文件等,Docext能够有效地解析文档内容,提取重要信息以供进一步分析。它支持多页文档处理,能够自动识别并提取跨页内容,提高了长文档处理的效率。
在使用Docext之前,需要确保安装了以下依赖项:
- Python >= 3.11
- uv工具(用于创建虚拟环境和安装依赖)
以下是安装步骤:
1.安装uv工具(如果尚未安装):
curl-LsSfhttps://astral.sh/uv/install.sh|sh
2.创建虚拟环境并激活:
uvvenv--python=3.11source.venv/bin/activate
3.安装Docext:
uvpipinstalldocext
或者通过克隆项目进行安装:
gitclonehttps://github.com/nanonets/docext.gitcddocextuvpipinstall-e.
Docext提供了一个基于Gradio的网页界面,可用于轻松处理文档。启动命令如下:
#以默认配置启动Web界面python-mdocext.app.app#以自定义配置启动Web界面python-mdocext.app.app--model_name"hosted_vllm/Qwen/Qwen2.5-VL-7B-Instruct-AWQ"--max_img_size1024
界面可以通过访问`http://localhost:7860`使用,默认用户名和密码为`admin`。
Docext还提供了一个REST API,用于程序化访问文档提取功能。启动API服务器的命令如下:
#增加并发限制以并行处理更多请求,默认值为1python-mdocext.app.app--concurrency_limit10
使用API从文档中提取信息的示例代码如下:
importpandasaspdimportconcurrent.futuresfromgradio_clientimportClient, handle_filedefdataframe_to_custom_dict(df: pd.DataFrame) ->dict:return{"headers": df.columns.tolist(),"data": df.values.tolist(),"metadata":None# Modify if metadata is needed}defdict_to_dataframe(d:dict) -> pd.DataFrame:returnpd.DataFrame(d["data"], columns=d["headers"])defget_extracted_fields_and_tables(client_url:str,username:str,password:str,model_name:str,fields_and_tables:dict,file_inputs:list[dict]):client = Client(client_url, auth=(username, password))result = client.predict(file_inputs=file_inputs,model_name=model_name,fields_and_tables=fields_and_tables,api_name="/extract_information")fields_results, tables_results = resultfields_df = dict_to_dataframe(fields_results)tables_df = dict_to_dataframe(tables_results)returnfields_df, tables_dffields_and_tables = dataframe_to_custom_dict(pd.DataFrame([{"name":"invoice_number","type":"field","description":"Invoice number"},{"name":"item_description","type":"table","description":"Item/Product description"}# add more fields and table columns as needed]))file_inputs = [{# "image": handle_file("https://your_image_url/invoice.jpg") # incase the image is hosted on the internet"image": handle_file("assets/invoice_test.jpeg") # incase the image is hosted on the local machine}]# send single requestfields_df, tables_df = get_extracted_fields_and_tables("http://localhost:7860","admin","admin","hosted_vllm/Qwen/Qwen2.5-VL-7B-Instruct-AWQ", fields_and_tables, file_inputs)print("========Fields:=========")print(fields_df)print("========Tables:=========")print(tables_df)# send multiple requests in paralleldefrun_request():returnget_extracted_fields_and_tables("http://localhost:7860","admin","admin","hosted_vllm/Qwen/Qwen2.5-VL-7B-Instruct-AWQ", fields_and_tables, file_inputs)withconcurrent.futures.ThreadPoolExecutor(max_workers=10)asexecutor:future_results = [executor.submit(run_request)for_inrange(10)]forfutureinconcurrent.futures.as_completed(future_results):fields_df, tables_df = future.result()print("========Fields:=========")print(fields_df)print("========Tables:=========")print(tables_df)
Docext是一款基于视觉语言模型(VLM)的智能文档处理工具,它通过无需OCR的方式直接从文档图像中提取结构化信息,提供了高效、安全且灵活的解决方案。无论是关键字段提取、表格数据解析,还是多页文档处理,Docext都能够满足企业和个人的需求。其本地化部署的特性特别适合处理敏感信息,确保数据隐私和安全性。如果你正在寻找一款无需OCR即可从各类文档中提取结构化信息的工具,Docext是一个值得关注的项目。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |