Donut: Document Understanding Transformer without OCR

Inc Lomin's avatar
Apr 19, 2022
Donut: Document Understanding Transformer without OCR

Introduction

Motivation

Visual Document Understanding(VDU) 시스템을 구축하기 위한 기존의 방법론들은 Optical Character Recognition(OCR)을 통해 text를 추출하고 이를 Downstream task의 input으로 사용하는 구조를 갖고 있습니다.
 
하지만 이러한 기존 방법론들은 다음과 같은 문제점들을 갖습니다.
  • OCR is expensive and is not always available. — OCR engine 자체만으로도 높은 cost 필요
  • OCR errors negatively influence subsequent processes. — 특히, 한국어와 일본어와 같이 OCR이 상대적으로 어려운 경우, 이 문제는 더 심각해짐 (post-OCR 방법론이 개발되기도 했으나, 이 또한 결과적으로 시스템의 크기를 키우고 유지보수에 상당한 cost가 필요함)
 

Contributions

notion image
  1. Visual Document Understaning을 위해 OCR 없이 End-to-End로 학습시킬 수 있는 Transformer 구조를 제안한 첫번째 연구
  1. 제안된 모델의 Pre-training을 위해 synthetic document image generator를 발표
  1. 실제 제품을 서비스하는 측면에서 cost-effective와 같은 실질적인 성능 향상
 

Proposed Method

Document Understanding Transformer(Donut)

논문에서는 OCR이 없으며 End-to-End로 학습 가능한 모델인 Document Understanding Transformer(Donut)을 제안합니다.
 
Donut은 Endoer-Decoder를 갖는 기본 Transformer의 구조와 동일합니다.
구체적으로는 Visual EncoderTextual Decoder로 구성되고 document image를 입력으로 받아 sequence of tokens를 생성합니다. 생성된 sequence of tokens은 Rule-based Algorithm을 통해 structed output으로 변환됩니다.
 
다음의 그림은 하나의 document image가 주어졌을 때 Donut이 Document Understanding을 수행하는 과정을 보여줍니다.
notion image
 
  1. Encoder
      • Encoder는 document image를 embedding vector로 변환하는 역할을 합니다.
      • 이 때, Encoder는 CNN-based model이 될 수도 있고 Transformer-based model이 될 수도 있습니다. 논문에서는 Document Parsing에 대한 예비 실험을 진행했을 때 Vision Transformer의 일종인 Swin Transformer가 가장 성능이 좋아서 Swin Transformer를 사용했다고 합니다.
 
  1. Decoder
      • Decoder는 Encoder에서 변환된 embedding vector와 input tokens을 입력으로 받아 sequence of tokens를 생성하는 역할을 합니다.
      • 논문에서는 BART의 Decoder 파트를 사용했다고 합니다.
        • GPT-2와 같은 다른 pre-trained Autoregressive Language Model들은 Transformer의 Decoder 파트만을 이용하는 구조이기 때문에 Cross-Attention(= Transformer의 Encoder-Decoder Attention)이 없어 Encoder와 연결할 수 없습니다. 따라서, BART 모델을 채택한 것으로 보입니다.
        • 참고로 BART 모델은 Transformer 구조를 가지는 모델로 BERT를 Encoder로, GPT-2를 Decoder로 사용하는 모델입니다. — BERT의 생성 task에서의 성능 저하 문제와 GPT-2의 단방향 언어모델 성질을 개선하고자 제안됨
 
  1. Model Input
      • 저자들은 GPT-3에 영감을 받아 prompt가 주어지면 token들을 생성해내도록 Donut을 모델링했습니다.
      • 다음은 각 task별 Model Input의 예를 보여줍니다.
        • 📎
          1. Simple Reading : [START_TextRead] 2. Document Classification : [START_Classification] 3. Document Parsing : [START_Parsing] 4. Document VQA : [START_QA][START_q]what is the first item?[End_q][START_a]
 
  1. Output Conversion
      • Donut 모델이 생성한 sequence of tokens를 JSON format으로 변환하는 과정입니다.
      • 모델 학습시에 special token으로 추가한 [START_*]와 [END_*]과 같은 token들을 활용하여 structed output으로 변환합니다.
 

Pre-training Data & Method

일반적으로 VDU의 SOTA 모델들은 large-scale real document image들을 통해 선학습을 수행합니다.
 
하지만 이러한 방법은 실제 서비스를 만드는 측면에서 항상 사용가능한 방법론은 아닙니다.
게다가 영어가 아닌 다른 언어들로 구성된 대용량 real document image를 구하는 것은 더더욱 힘듭니다.
 
따라서, 저자들은 Synthetic Document Generator(SynthDoG)라는 데이터 생성기를 제안했습니다.
notion image
위의 그림과 같이 SynthDoG는 ImageNet에서 샘플링된 이미지들을 배경으로 삼고 Wikipedia에서 샘플링된 words와 phrases을 다양한 Rule-based random pattern들에 끼어넣는 방식으로 구현되었습니다.
논문에서는 Donut의 pre-training을 위해서 SynthDoG를 통해 영어, 한국어, 일본어 각각 400K개의 이미지들을 생성했습니다.(총 1.2M개의 synthetic document image)
 
마지막으로 저자들은 Donut의 pre-training에는 Simple Reading task를 도입하였습니다.
즉, document image를 top left to bottom right 방식으로 잘 읽어내도록 학습시켰습니다.
 

Experiments

Downstream tasks

논문에서는 아래의 3가지 VDU task들에 대해 실험을 진행했습니다.
  • Document Classification : document image의 클래스를 분류하는 task
    • —> Donut에서는 아래와 같은 방식으로 output이 생성되면 “receipt”가 그 문서의 class가 됨
      📎
      Input : [START_Classification] Output : [START_class][receipt][END_class][END]
  • Document Parsing : document image에서 구조화된 정보를 추출하는 task(NLP의 Sequence Classification과 동일)
    • —> Donut에서는 아래와 같은 방식으로 output이 생성되면 “3002-Kyoto Choco Mochi”가 “name” 클래스에 해당됨
      📎
      Input : [START_Parsing] Output : [START_items][START_name]3002-Kyoto Choco Mochi[END_name]...[END]
  • Document VQA : document image와 질문이 주어졌을 때 질문에 대한 답을 하는 task
    • —> Donut에서는 아래와 같은 방식으로 output이 생성되면 “3002-Kyoto Choco Mochi”가 질문에 대한 답변이 됨
      📎
      Input : [START_QA][START_q]what is the first item?[End_q][START_a] Output : 3002-Kyoto Choco Mochi[END_a][END]
 

Results

  1. Document Classification
    1. notion image
       
  1. Document Parsing
    1. notion image
       
  1. Document VQA
    1. notion image
      • 첫번째 group은 데이터셋에서 제공된 OCR 데이터를 이용한 결과
      • 두번째 group은 ClOVA의 OCR API를 이용한 결과
      • 세번째 group은 MS의 OCR API를 이용한 결과
 
위의 결과들을 보면 Donut이 OCR이 없음에도 성능적으로 우수한 것을 확인할 수 있습니다.
또한, OCR 엔진을 사용하지 않으므로 inference time도 상당히 줄어드는 것을 확인할 수 있습니다.
 
하지만 Document VQA task에서 Donut의 성능은 세번째 group과 비교해 볼 때 성능이 떨어짐을 확인할 수 있습니다.
저자들은 이에 관해서 LayoutLM과 같은 SOTA 모델들은 large-scale real image로 pre-training하기 때문에 성능적으로 상당히 우수할 수 밖에 없다고 합니다.(실제로 LayoutLM은 11M개의 real image를 사용했지만 Donut의 경우, 1.2M개의 synthetic image를 사용)
이를 검증하기 위해서 10K개의 추가적인 real image를 포함시켜 pre-training을 해보니 성능이 47.14에서 53.14로 개선되었다고 합니다.
 

Visualization

마지막으로 저자들은 Donut의 cross-attention map을 시각화함으로써 각 토큰을 예측할 때 실제로 Attention을 잘 하고 있는지를 확인하고(아래의 왼쪽 그림) 간단한 Heuristic 방법을 통해 Attention Map을 합쳐 하나의 Bounding Box로 합쳐 시각화(아래의 오른쪽 그림)할 수 있게 했습니다.
notion image
 

Conclusion

논문에서는 Visual Document Understanding에서의 비효율을 초래하는 OCR 모듈을 제거한 Transformer 기반의 모델인 Donut을 제안했습니다. 또한, 일반적인 상황에서는 pre-training을 위해 large-scale real image를 구하는 것이 어렵다는 문제를 해결하고자 SynthDoG를 제안했습니다.
 
개인적으로 이 논문을 읽고 느낀점과 깨달은 바가 많았습니다.
우선, Donut 모델이 Visual Encoder - Textual Decoder 구조를 사용하므로 기존 Document Understanding 모델들이 visual feature를 제대로 사용하지 못한다는 문제점을 어느정도 해결했다고 생각했습니다.
다음으로 Downstream Task에 들어갈 prompt와 모델의 output 등을 잘 설계하여 데이터를 구성한다면 향후 DU팀에서 구현해야할 Relation Extraction task도 해결할 수 있을거 같다는 생각을 했습니다.
마지막으로 이 논문은 NAVER CLOVA라는 대기업에서 쓴 논문임에도 데이터를 자동 생성하는 방법, computing cost 등을 줄일 수 있는 방법을 생각하고 시도하였다는 것이 놀라웠습니다.
Share article