Donut Receipts Extract
基於Donut架構的收據文本提取專用模型,通過視覺編碼器和文本解碼器實現無需OCR的文檔理解
下載量 66
發布時間 : 1/28/2024
模型概述
該模型專門用於從收據圖像中提取結構化文本信息,採用Swin Transformer視覺編碼器和BART文本解碼器架構,支持端到端的收據信息識別與提取。
模型特點
無需OCR的文檔理解
直接處理圖像輸入,無需傳統OCR預處理步驟即可提取文本信息
雙分辨率處理
V2版本採用雙倍分辨率處理收據圖像,顯著提升識別精度
結構化輸出
自動生成JSON格式的結構化數據,包含收據關鍵字段(如金額、電話、折扣等)
改進的數據集
基於去重並人工校正的數據集訓練,相比V1版本性能顯著提升
模型能力
收據圖像識別
文本信息提取
結構化數據生成
多字段聯合解析
使用案例
零售與財務
電子收據歸檔
自動提取紙質收據的金額、日期等關鍵信息
準確率89.5%,字符錯誤率15.8%
費用報銷系統
識別員工提交的收據圖像並自動填充報銷表單
支持<s_total>、<s_date>等12個關鍵字段提取
🚀 Donut-receipts-extract
Donut-receipts-extract 是一個基於 Donut 模型的微調模型,專門用於從收據中高效提取文本信息。它在特定數據集上進行訓練和優化,在收據文本提取任務上取得了較好的效果。
🚀 快速開始
環境準備
確保你已經安裝了必要的庫,如 torch
、transformers
等。
代碼示例
import torch
import re
from PIL import Image
from transformers import DonutProcessor, VisionEncoderDecoderModel
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
processor = DonutProcessor.from_pretrained("AdamCodd/donut-receipts-extract")
model = VisionEncoderDecoderModel.from_pretrained("AdamCodd/donut-receipts-extract")
model.to(device)
def load_and_preprocess_image(image_path: str, processor):
"""
Load an image and preprocess it for the model.
"""
image = Image.open(image_path).convert("RGB")
pixel_values = processor(image, return_tensors="pt").pixel_values
return pixel_values
def generate_text_from_image(model, image_path: str, processor, device):
"""
Generate text from an image using the trained model.
"""
# Load and preprocess the image
pixel_values = load_and_preprocess_image(image_path, processor)
pixel_values = pixel_values.to(device)
# Generate output using model
model.eval()
with torch.no_grad():
task_prompt = "<s_receipt>" # <s_cord-v2> for v1
decoder_input_ids = processor.tokenizer(task_prompt, add_special_tokens=False, return_tensors="pt").input_ids
decoder_input_ids = decoder_input_ids.to(device)
generated_outputs = model.generate(
pixel_values,
decoder_input_ids=decoder_input_ids,
max_length=model.decoder.config.max_position_embeddings,
pad_token_id=processor.tokenizer.pad_token_id,
eos_token_id=processor.tokenizer.eos_token_id,
early_stopping=True,
bad_words_ids=[[processor.tokenizer.unk_token_id]],
return_dict_in_generate=True
)
# Decode generated output
decoded_text = processor.batch_decode(generated_outputs.sequences)[0]
decoded_text = decoded_text.replace(processor.tokenizer.eos_token, "").replace(processor.tokenizer.pad_token, "")
decoded_text = re.sub(r"<.*?>", "", decoded_text, count=1).strip() # remove first task start token
decoded_text = processor.token2json(decoded_text)
return decoded_text
# Example usage
image_path = "path_to_your_image" # Replace with your image path
extracted_text = generate_text_from_image(model, image_path, processor, device)
print("Extracted Text:", extracted_text)
更多代碼示例請參考 文檔。
✨ 主要特性
- 模型架構:Donut 模型由視覺編碼器(Swin Transformer)和文本解碼器(BART)組成。給定一張圖像,編碼器先將圖像編碼為嵌入張量,然後解碼器根據編碼器的編碼自迴歸地生成文本。
- 版本更新:V2 版本在改進後的數據集上進行了重新訓練,數據集經過去重和手動修正,性能優於 V1 版本。
- 特定任務優化:該微調模型專門為從收據中提取文本而設計。
📚 詳細文檔
版本說明
V2 版本
- 數據集:在改進後的 AdamCodd/donut-receipts 數據集上重新訓練(去重、手動修正)。
- 許可證:V2 模型的新許可證為 cc-by-nc-4.0。如需商業使用權,請聯繫(adamcoddml@gmail.com)。同時,V1 模型仍可在 MIT 許可證下使用(在 v1 分支下)。
- 評估結果:
- 損失:0.326069
- 編輯距離:0.145293
- CER:0.158358
- WER:1.673989
- 平均準確率:0.895219
- F1:0.977897
- 任務提示變更:V2 的任務提示已更改為
<s_receipt>
(V1 為<s_cord-v2>
)。新增了兩個鍵<s_svc>
和<s_discount>
,<s_telephone>
重命名為<s_phone>
。
V1 版本
- 微調基礎:該模型是在 donut 基礎模型 上針對 AdamCodd/donut-receipts 數據集進行微調的。
- 評估結果:
- 損失:0.498843
- 編輯距離:0.198315
- CER:0.213929
- WER:7.634032
- 平均準確率:0.843472
預期用途和侷限性
- 預期用途:該微調模型專門用於從收據中提取文本,在其他類型的文檔上可能無法達到最佳性能。
- 侷限性:使用的數據集仍不理想(仍存在許多錯誤),因此該模型需要在以後重新訓練以提高其性能。
訓練超參數
- 學習率:3e-05
- 訓練批次大小:2
- 評估批次大小:4
- 隨機種子:42
- 優化器:AdamW,β=(0.9, 0.999),ε=1e-08
- 學習率調度器類型:線性
- 學習率調度器熱身步數:300
- 訓練輪數:35
- 權重衰減:0.01
框架版本
- Transformers 4.36.2
- Datasets 2.16.1
- Tokenizers 0.15.0
- Evaluate 0.4.1
🔧 技術細節
模型信息
屬性 | 詳情 |
---|---|
模型類型 | Donut 微調模型 |
基礎模型 | naver-clova-ix/donut-base |
訓練數據 | AdamCodd/donut-receipts |
評估指標
指標 | 值 |
---|---|
損失 | 0.326069(V2);0.498843(V1) |
編輯距離 | 0.145293(V2);0.198315(V1) |
CER | 0.158358(V2);0.213929(V1) |
WER | 1.673989(V2);7.634032(V1) |
平均準確率 | 0.895219(V2);0.843472(V1) |
F1 | 0.977897(V2) |
📄 許可證
本項目 V2 版本採用 cc-by-nc-4.0 許可證。如需商業使用權,請聯繫(adamcoddml@gmail.com)。V1 版本採用 MIT 許可證(在 v1 分支下)。
BibTeX 引用
@article{DBLP:journals/corr/abs-2111-15664,
author = {Geewook Kim and
Teakgyu Hong and
Moonbin Yim and
Jinyoung Park and
Jinyeong Yim and
Wonseok Hwang and
Sangdoo Yun and
Dongyoon Han and
Seunghyun Park},
title = {Donut: Document Understanding Transformer without {OCR}},
journal = {CoRR},
volume = {abs/2111.15664},
year = {2021},
url = {https://arxiv.org/abs/2111.15664},
eprinttype = {arXiv},
eprint = {2111.15664},
timestamp = {Thu, 02 Dec 2021 10:50:44 +0100},
biburl = {https://dblp.org/rec/journals/corr/abs-2111-15664.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
⚠️ 重要提示
要訪問此模型,請發送電子郵件至 adamcoddml@gmail.com,並簡要描述你的項目或應用。未提供此信息的請求將不予考慮,且在任何情況下都不會授予訪問權限。
如果你想支持作者,可以點擊 這裡。
Clip Vit Large Patch14
CLIP是由OpenAI開發的視覺-語言模型,通過對比學習將圖像和文本映射到共享的嵌入空間,支持零樣本圖像分類
圖像生成文本
C
openai
44.7M
1,710
Clip Vit Base Patch32
CLIP是由OpenAI開發的多模態模型,能夠理解圖像和文本之間的關係,支持零樣本圖像分類任務。
圖像生成文本
C
openai
14.0M
666
Siglip So400m Patch14 384
Apache-2.0
SigLIP是基於WebLi數據集預訓練的視覺語言模型,採用改進的sigmoid損失函數,優化了圖像-文本匹配任務。
圖像生成文本
Transformers

S
google
6.1M
526
Clip Vit Base Patch16
CLIP是由OpenAI開發的多模態模型,通過對比學習將圖像和文本映射到共享的嵌入空間,實現零樣本圖像分類能力。
圖像生成文本
C
openai
4.6M
119
Blip Image Captioning Base
Bsd-3-clause
BLIP是一個先進的視覺-語言預訓練模型,擅長圖像描述生成任務,支持條件式和非條件式文本生成。
圖像生成文本
Transformers

B
Salesforce
2.8M
688
Blip Image Captioning Large
Bsd-3-clause
BLIP是一個統一的視覺-語言預訓練框架,擅長圖像描述生成任務,支持條件式和無條件式圖像描述生成。
圖像生成文本
Transformers

B
Salesforce
2.5M
1,312
Openvla 7b
MIT
OpenVLA 7B是一個基於Open X-Embodiment數據集訓練的開源視覺-語言-動作模型,能夠根據語言指令和攝像頭圖像生成機器人動作。
圖像生成文本
Transformers 英語

O
openvla
1.7M
108
Llava V1.5 7b
LLaVA 是一款開源多模態聊天機器人,基於 LLaMA/Vicuna 微調,支持圖文交互。
圖像生成文本
Transformers

L
liuhaotian
1.4M
448
Vit Gpt2 Image Captioning
Apache-2.0
這是一個基於ViT和GPT2架構的圖像描述生成模型,能夠為輸入圖像生成自然語言描述。
圖像生成文本
Transformers

V
nlpconnect
939.88k
887
Blip2 Opt 2.7b
MIT
BLIP-2是一個視覺語言模型,結合了圖像編碼器和大型語言模型,用於圖像到文本的生成任務。
圖像生成文本
Transformers 英語

B
Salesforce
867.78k
359
精選推薦AI模型
Llama 3 Typhoon V1.5x 8b Instruct
專為泰語設計的80億參數指令模型,性能媲美GPT-3.5-turbo,優化了應用場景、檢索增強生成、受限生成和推理任務
大型語言模型
Transformers 支持多種語言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一個基於SODA數據集訓練的超小型對話模型,專為邊緣設備推理設計,體積僅為Cosmo-3B模型的2%左右。
對話系統
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基於RoBERTa架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98