Docext:无需 OCR,本地部署的文档提取神器,企业数据处理新选择

在数字化办公日益普及的今天,文档信息提取成为了企业和个人处理大量非结构化数据的重要环节。然而,传统的OCR 技术在处理复杂文档时常常面临准确率低、格式混乱等问题,尤其是在处理敏感信息时,数据隐私和安全性也难以保障。为了解决这些痛点,NanoNets 团队开发了一款开源的本地化工具——Docext,它利用视觉语言模型(VLM)实现无需 OCR 的结构化信息提取,为企业和开发者提供了一种高效、安全且灵活的解决方案。

一、项目概述

Docext 是一个无需 OCR 的文档信息提取工具,由 NanoNets 团队开发并开源。它利用视觉语言模型(VLMs)从文档图像中准确识别和提取字段数据和表格信息,支持发票、护照等多种常见文档类型Docext 旨在通过本地部署的方式,保障数据隐私,同时提供自定义字段、表格提取、多页文档支持和 REST API 集成等功能,全面提升文档处理的效率和安全性。

二、技术原理

(一)视觉语言模型(VLMs

Docext 的核心在于其利用的视觉语言模型(VLMs)。与传统的 OCR 技术不同,VLMs 能够直接从文档图像中提取信息,而无需先进行字符识别。这种模型通过结合视觉信息和语言理解能力,能够更准确地识别文档中的结构化信息,例如关键字段和表格数据。VLMs 的优势在于其能够理解文档的整体布局和语义,从而在提取信息时保持更高的准确性和稳定性。

(二)智能文档处理排行榜

为了评估不同模型在文档处理任务中的性能,Docext 提供了一个智能文档处理排行榜。该排行榜涵盖了七个关键的文档智能挑战,包括关键信息提取(KIE)、视觉问答(VQA)、光学字符识别(OCR)、文档分类、长文档处理、表格提取和置信度评分校准。通过这些任务的评估,研究人员和实践者可以更全面地了解模型在不同场景下的表现,从而选择最适合其需求的模型。

三、主要功能

(一)字段和表格提取

Docext 能够从各种文档中提取关键字段信息和表格数据,同时保持原始结构。无论是发票中的金额、日期,还是护照中的姓名、国籍,Docext 都能够准确识别并提取出来。此外,它还支持从复杂表格中提取结构化数据,即使表格跨越多页,Docext 也能够自动识别并提取跨页内容。

(二)自定义和预建模板

Docext 提供了高度的灵活性,用户可以根据自己的需求定义自定义字段,或者使用内置的常见文档类型模板,如发票、护照等。这些模板已经经过优化,能够快速启动并满足大多数用户的需求。同时,用户还可以根据实际情况动态添加或删除字段/列,以满足个性化的需求。

(三)置信度评分

为了帮助用户评估提取信息的可靠性,Docext 提供了置信度评分功能。每个提取的字段和表格数据都会附带一个置信度评分,用户可以根据这个评分来判断数据的准确性,从而在必要时进行人工审核或进一步处理。

(四)多页文档支持

在处理长文档时,Docext 能够自动处理多页内容,无需用户手动分页。这使得它特别适合处理合同、研究报告等复杂的长文档,能够有效地提高工作效率。

(五)本地化部署

Docext 支持在 Linux 和 macOS 系统上本地部署,确保数据完全在本地处理,不会上传到云端。这种部署方式极大地保障了数据的隐私和安全性,特别适合处理敏感信息。

(六)REST API 集成

Docext 提供了 RESTful API 接口,可以轻松集成到现有的系统或应用程序中。通过 API,用户可以程序化地访问文档提取功能,实现自动化处理。

四、应用场景

(一)企业自动化

Docext 可以广泛应用于企业的自动化流程中,例如自动处理发票、收据、合同等文档,减少人工干预,提高工作效率。通过 REST API 集成,Docext 可以轻松集成到现有的企业系统中,实现文档处理的自动化。

(二)数据录入与分析

在数据录入和分析方面,Docext 能够从复杂表格中提取结构化数据,为数据分析和决策提供支持。它支持多种文档类型,能够快速提取关键信息,提高数据处理的速度和准确性。

(三)出入境管理

在出入境管理场景中,Docext 可以快速提取护照、签证等证件的关键信息,简化出入境流程。其本地化部署的特性确保了数据的安全性和隐私性,特别适合处理敏感信息。

(四)长文档处理

对于长文档,如研究报告、法律文件等,Docext 能够有效地解析文档内容,提取重要信息以供进一步分析。它支持多页文档处理,能够自动识别并提取跨页内容,提高了长文档处理的效率。

五、快速使用

(一)安装环境

在使用Docext 之前,需要确保安装了以下依赖项:

– Python >= 3.11

– uv 工具(用于创建虚拟环境和安装依赖)

以下是安装步骤:

1. 安装 uv 工具(如果尚未安装):

curl -LsSf https://astral.sh/uv/install.sh | sh

2. 创建虚拟环境并激活:

uv venv --python=3.11source .venv/bin/activate

3. 安装 Docext

uv pip install docext

或者通过克隆项目进行安装:

git clone https://github.com/nanonets/docext.gitcd docextuv pip install -e .

(二)启动Web 界面

Docext 提供了一个基于 Gradio 的网页界面,可用于轻松处理文档。启动命令如下:

# 以默认配置启动 Web 界面python -m docext.app.app# 以自定义配置启动 Web 界面python -m docext.app.app --model_name "hosted_vllm/Qwen/Qwen2.5-VL-7B-Instruct-AWQ" --max_img_size 1024

界面可以通过访问`http://localhost:7860` 使用,默认用户名和密码为 `admin`

(三)使用REST API

Docext 还提供了一个 REST API,用于程序化访问文档提取功能。启动 API 服务器的命令如下:

# 增加并发限制以并行处理更多请求,默认值为 1python -m docext.app.app --concurrency_limit 10

使用API 从文档中提取信息的示例代码如下:

import pandas as pdimport concurrent.futuresfrom gradio_client import Client, handle_file
def dataframe_to_custom_dict(df: pd.DataFrame) -> dict:    return {        "headers": df.columns.tolist(),        "data": df.values.tolist(),        "metadata"None  # Modify if metadata is needed    }
def dict_to_dataframe(d: dict) -> pd.DataFrame:    return pd.DataFrame(d["data"], columns=d["headers"])
def get_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 = result    fields_df = dict_to_dataframe(fields_results)    tables_df = dict_to_dataframe(tables_results)    return fields_df, tables_df
fields_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 paralleldef run_request():    return get_extracted_fields_and_tables(        "http://localhost:7860""admin""admin""hosted_vllm/Qwen/Qwen2.5-VL-7B-Instruct-AWQ", fields_and_tables, file_inputs    )
with concurrent.futures.ThreadPoolExecutor(max_workers=10as executor:    future_results = [executor.submit(run_request) for _ in range(10)]    for future in concurrent.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 是一个值得关注的项目。

七、项目地址

GitHub仓库https://github.com/NanoNets/docext

智能文档处理排行榜:https://idp-leaderboard.org/


(文:小兵的AI视界)

发表评论

×

下载每时AI手机APP

 

和大家一起交流AI最新资讯!

立即前往