← Go back
Paper ReviewMar 16, 20266 min read

Donut

Document Understanding
OCR-free Document Understanding TransformerGeewook Kim, Teakgyu Hong, Moonbin Yim, Jeongyeon Nam, Jinyoung Park, Jinyeong Yim, Wonseok Hwang, Sangdoo Yun, Dongyoon Han, Seunghyun Park
ECCV 2022·arXiv ↗

Understanding document images (e.g., invoices) is a core but challenging task since it requires complex functions such as reading text and a holistic understanding of the document. Current Visual Document Understanding (VDU) methods outsource the task of reading text to off-the-shelf Optical Character Recognition (OCR) engines and focus on the understanding task with the OCR outputs. Although such OCR-based approaches have shown promising performance, they suffer from 1) high computational costs for using OCR; 2) inflexibility of OCR models on languages or types of document; 3) OCR error propagation to the subsequent process. To address these issues, in this paper, we introduce a novel OCR-free VDU model named Donut, which stands for Document understanding transformer. As the first step in OCR-free VDU research, we propose a simple architecture (i.e., Transformer) with a pre-training objective (i.e., cross-entropy loss). Donut is conceptually simple yet effective. Through extensive experiments and analyses, we show a simple OCR-free VDU model, Donut, achieves state-of-the-art performances on various VDU tasks in terms of both speed and accuracy. In addition, we offer a synthetic data generator that helps the model pre-training to be flexible in various languages and domains. The code, trained model and synthetic data are available at https://github.com/clovaai/donut.

TL;DR

Donut은 문서 이미지를 입력받아 JSON 토큰 시퀀스를 예측하는 단일 encoder-decoder Transformer다. OCR을 전처리 모듈로 두지 않고 raw pixel에서 구조화된 출력까지 한 번에 매핑하는, document understanding을 위한 OCR-free 접근을 처음으로 제시했다. Pretraining은 이미지를 보고 그 안의 텍스트를 읽어 내려가는 것(다음 토큰 예측) 하나뿐이며, 저자는 이를 pseudo-OCR task라고 명명한다. 정형 IE 벤치마크에서 당시 SOTA였던 LayoutLMv2를 정확도와 속도 양쪽에서 능가했다고 보고한다.

본 논문의 가장 큰 가치는 절대 성능보다 OCR module을 떼어내도 VDU 파이프라인이 성립한다는 것을 실증한 데 있고, 이후 Pix2Struct, Nougat 같은 후속 흐름의 출발점이 됐다. 한계는 입력 해상도에 성능이 강하게 영향을 받는다는 점과, 그 해상도를 키우는 순간 연산 비용이 크게 올라간다는 점이다.

Background

VDU(Visual Document Understanding)는 영수증, 인보이스, 명함 같은 semi-structured 문서 이미지에서 원하는 정보를 뽑아내는 태스크다. 당시 OCR 기반 파이프라인은 문제를 두 단계로 분리해서, 먼저 OCR로 텍스트와 bounding box를 읽고 그다음 그 출력을 입력 feature로 받아 understanding을 수행했다. LayoutLM, LayoutLMv2, BROS 같은 backbone이 모두 이런 방식이었는데, OCR이 출력한 텍스트 토큰과 좌표를 encoder에 입력해 contextualized representation을 얻고 거기서 분류나 tagging을 했다.

The paradigm shift.The paradigm shift.

저자는 이 OCR 의존성이 만든 문제를 정리한다. OCR 추론 자체가 비싸고, off-the-shelf 엔진은 언어나 도메인이 바뀌면 유연하게 대응하지 못하며, OCR 단계의 에러가 후속 understanding으로 그대로 전파된다. 마지막 문제는 한국어나 중국어처럼 character set이 복잡한 언어에서 특히 심해지는데, OCR 품질이 낮을수록 그 위에 올린 understanding 성능도 함께 떨어지기 때문이다. 이를 막으려고 post-OCR correction 모듈을 붙이는 관행이 있었지만, 이는 전체 시스템 크기와 유지보수 비용을 키울 뿐 근본 해법은 아니다.

Donut의 출발점은 OCR이 병목이자 에러의 원천이라면 그 단계를 파이프라인에서 제거하고 이미지에서 출력으로 가는 직접 매핑을 학습하면 된다는 것이다. OCR-독립 visual backbone을 쓰려는 초기 시도가 있었지만 성능이 받쳐주지 않았는데, Donut은 Transformer와 대규모 pretraining을 동원해 그 방향을 다시 시도한 것이다.

Method

The pipeline of Donut.The pipeline of Donut.

구조는 의도적으로 단순하다. Swin Transformer 기반 visual encoder와 BART 기반 textual decoder를 이어 붙인 게 전부이며, OCR과 관련된 어떤 모듈도 없다.

encoder는 입력 이미지 xRH×W×C\mathbf{x} \in \mathbb{R}^{H \times W \times C}를 임베딩 집합 {ziziRd,1in}\{\mathbf{z}_i \mid \mathbf{z}_i \in \mathbb{R}^{d}, 1 \le i \le n\}으로 변환한다. 여기서 nn은 feature map 크기 혹은 패치 개수, dd는 latent 차원이다. CNN도 후보였지만 저자는 document parsing 예비 실험에서 가장 나았던 Swin Transformer를 골랐는데, ablation에서 EfficientNetV2와 Swin이 다른 backbone들을 앞섰고 둘 중에서는 Transformer 계열의 확장성을 이유로 Swin을 택했다고 한다.

decoder는 {z}\{\mathbf{z}\}를 조건으로 토큰 시퀀스 (yi)i=1m(\mathbf{y}_i)_{i=1}^{m}를 생성한다. yiRv\mathbf{y}_i \in \mathbb{R}^{v}ii번째 토큰의 one-hot, vv는 vocabulary 크기, mm은 최대 길이 hyperparameter다. decoder 가중치는 multilingual BART로 초기화하므로, encoder를 새로 학습하는 동안 decoder는 pretraining으로 얻은 다국어 언어 prior를 가진 상태에서 출발한다. 이 비대칭 초기화가 다국어 일반화에 기여한 것으로 보인다.

학습 목적함수는 next token prediction의 cross-entropy 하나다.

L=t=1mlogp(yty<t,x)\mathcal{L} = -\sum_{t=1}^{m} \log p(\mathbf{y}_t \mid \mathbf{y}_{<t}, \mathbf{x})

x\mathbf{x}는 입력 문서 이미지, yt\mathbf{y}_ttt step에서 생성할 토큰이며, decoder는 이전 토큰들 y<t\mathbf{y}_{<t}와 이미지에 동시에 조건을 걸어 다음 토큰을 예측한다. 학습 시에는 teacher-forcing을 적용하고, 추론 시에는 GPT-3 식으로 autoregressive하게 작동한다.

출력은 JSON으로 받으며, [START_*][END_*] 특수 토큰으로 각 필드를 감싸고, 토큰 시퀀스와 JSON이 1-to-1로 invertible하도록 설계했다. 구조가 깨진 출력, 예를 들어 [START_name]은 있는데 [END_name]이 없으면 해당 필드를 추출 실패로 보고 regex 등의 단순한 규칙으로 처리한다.

Pretraining

Pretraining 과제는 이미지 안의 모든 텍스트를 reading order(기본적으로 top-left에서 bottom-right)대로 읽는 것이며, 저자는 이를 visual corpora 위의 visual language modeling으로 본다. 이 단계에서 모델에 how to read를 먼저 가르치고, fine-tuning에서 how to understand를 얹는 구성이다.

문제는 학습 데이터인데, 영어는 IIT-CDIP의 11M 스캔 문서에 commercial OCR을 돌려 pseudo label을 얻으면 되지만 다른 언어는 이런 데이터가 없다. 저자는 SynthDoG(Synthetic Document Generator)를 만들어 이 의존성을 해결했는데, ImageNet에서 배경을, 수집한 종이 사진에서 질감을, Wikipedia에서 단어와 구를 샘플링하고 rule-based 알고리즘으로 grid를 무작위로 배치해 레이아웃을 구성한다.

Pretraining이 텍스트 읽기 하나로 단순하므로 합성 데이터만으로 다국어 확장이 가능하고, 이는 새 언어마다 OCR 엔진을 재학습해야 했던 기존 접근과 다른 점이다.

Fine-tuning

모든 downstream 태스크를 JSON 예측 문제로 통일한다. 분류는 [START_class][memo][END_class]{"class": "memo"}로 환원되는 식이고, DocVQA는 질문을 prompt로 넣어 답을 생성한다. softmax head를 따로 붙이지 않고 분류조차 generation으로 푸는 건 task-solving 방식의 균일성을 지키려는 선택이다.

Results

Classification(RVL-CDIP)에서 Donut은 OCR을 쓰지 않고 95.30%로 LayoutLMv2(95.25%)를 근소하게 넘으면서, 파라미터는 더 적고 속도는 약 2배 빠르다(752ms vs 1489ms)고 보고한다. 여기서 속도 비교가 공정한 이유는 OCR-based 모델의 시간에 OCR 추론이 포함되지 않은 backbone 단독 수치라는 점이고, 실제 배포 비용 차이는 표의 숫자보다 더 벌어진다고 볼 수 있다.

IE에서는 네 데이터셋 모두에서 가장 높은 F1과 TED 기반 accuracy를 보였다고 한다.

DatasetLayoutLMv2 F1 / AccDonut F1 / AccTime (LayoutLMv2 → Donut)
CORD78.9 / 82.484.1 / 90.91.7s → 1.2s
Ticket87.2 / 90.194.1 / 98.71.8s → 0.6s
Business Card52.2 / 83.057.8 / 84.41.6s → 1.4s
Receipt72.9 / 78.078.6 / 88.62.6s → 1.9s

F1과 TED accuracy의 격차가 의미하는 바가 중요한데, F1은 부분 겹침이나 구조(group, nested hierarchy)를 보지 못하고 필드 단위로만 맞고 틀림을 센다. Donut이 F1보다 TED accuracy에서 더 큰 우위를 보이는 건, 단순히 필드를 읽는 것을 넘어 menu 아래 name/count/price가 묶이는 중첩 구조까지 생성으로 잡아낸다는 뜻으로 읽힌다. OCR 출력에 BIO-tagging을 얹는 기존 방식이 serialization 순서에 묶여 구조 복원에 약했던 것과 대비된다.

DocVQA 출력 예시. OCR 의존 모델(LayoutLMv2, 왼쪽·가운데)은 OCR 에러가 성능 상한을 만들고, Donut(오른쪽)은 해상도 제약으로 작은 글자를 놓치기도 하나 입력 크기를 키우면 완화된다.DocVQA 출력 예시. OCR 의존 모델(LayoutLMv2, 왼쪽·가운데)은 OCR 에러가 성능 상한을 만들고, Donut(오른쪽)은 해상도 제약으로 작은 글자를 놓치기도 하나 입력 크기를 키우면 완화된다.

DocVQA는 결이 다른데, Donut의 ANLS는 67.5로 LayoutLMv2의 78.1에 못 미친다. 다만 handwritten 문서에서는 72.1로 LayoutLMv2-Large-QG(67.3)를 앞서는데, 저자는 OCR이 손글씨에서 약해 OCR-dependent 모델의 성능 상한이 OCR 품질에 묶이는 반면 Donut은 그 상한이 없다는 점을 근거로 들었다.

Ablation에서는 pretraining 과제 비교에서 image captioning처럼 일반적 image-text 지식을 주입하는 과제는 fine-tuning 이득이 거의 없었고 단순한 text reading이 가장 효과적이었다고 한다. IE에는 합성 데이터만으로 충분했지만 DocVQA에는 실제 IIT-CDIP 이미지가 중요했는데, DocVQA 이미지 분포가 IIT-CDIP와 가깝기 때문으로 본다. 입력 해상도 분석에서는 해상도를 키울수록 성능이 빠르게 올랐고, tiny text가 많은 DocVQA에서 이 효과가 뚜렷했다. 또 저자원 상황에서도 강건해서 CORD를 80장(전체의 10%)만 써도 LayoutLMv2를 넘었다는 결과는, pretraining이 reading을 이미 학습해둔 덕에 fine-tuning이 understanding 매핑만 배우면 된다는 가설과 잘 맞는다고 볼 수 있다.

Visualization of cross-attention maps in the decoder and its application to text localization.Visualization of cross-attention maps in the decoder and its application to text localization.

특히 localization 라벨 없이 학습했는데도 decoder의 cross-attention map이 해당 텍스트 영역을 짚는다는 결과가 있는데, 이는 명시적 detection 없이 generation만으로 공간 정렬이 emergent하게 생긴다는 것이며, OCR이 하던 공간 정렬을 cross-attention이 수행한다는 앞의 해석과 이어진다.

Limitations

가장 분명한 한계는 입력 해상도와 연산 비용의 직접적 trade-off인데, 작은 텍스트를 읽으려면 해상도를 키워야 하고 원본 Transformer attention을 쓰는 한 그 비용이 크게 오른다. pretraining 입력이 2560×1920이고, 이 설정에서 A100 64장으로 DocVQA fine-tuning에 약 1 GPU-day, RVL-CDIP에 약 2 GPU-day가 든다. 저자는 Linformer 같은 efficient attention으로 줄일 수 있다고 하면서도, 구조를 단순하게 유지하려고 원본 Transformer를 그대로 썼다고 밝힌다.

Autoregressive generation 자체의 비용도 있는데, 출력이 길어질수록 추론 시간이 토큰 수에 리니어하게 늘어 IE처럼 출력이 짧은 태스크에서는 유리하지만 긴 문서 전체를 출력해야 하는 상황에서는 다르게 보일 수 있다. 표의 속도 우위가 출력 길이가 짧은 태스크에 치우쳐 있다는 점은 감안해야 한다.

Structured output이 깨졌을 때의 처리가 거칠다는 점도 있는데, [END_*] 토큰이 빠지면 필드를 그냥 실패로 버린다. generation 기반 모델 특유의 부분 오류나 hallucination은 정량적으로 분석하지 않았고, JSON 구조가 복잡해질 때 어떤 문제가 생기는지도 따로 다루지 않았다.

Thoughts

Donut의 기여는 VDU에서 OCR이 별도 stage로 필수가 아님을 실증한 데 있고, 그 위에서 Pix2Struct는 image-to-text pretraining을 더 일반적인 screenshot parsing으로 이어갔으며, Meta에서 나온 Nougat은 같은 접근을 학술 문서(LaTeX)의 수식 포함 markup 추출로 가져갔다. 해상도 trade-off는 이후 연구에서 가장 많이 지적된 부분이고, 후속 연구들은 efficient attention이나 가변 해상도 tokenization을 도입해 이를 완화했다.

지금 관점에서 보면 Donut은 사실상 작은 document VLM이다. 학습 방식이 지금의 multimodal LLM과 구조적으로 같고, 차이는 규모와 instruction tuning 유무 정도다. 범용 VLM이 문서 태스크를 점점 잘 흡수하면서 Donut 같은 task-specific OCR-free 모델의 입지가 줄어든 것은 맞지만, 좁은 도메인에서 작은 모델로 빠르게 출력을 뽑아야 하는 산업 환경에서는 이 계열이 여전히 유효한 선택지다.