개요
LayoutParser
딥러닝 기반의 Document Image Analysis (DIA) 관련 개발 및 연구를 하는 과정에서 구심점이 되는 코드베이스가 없는 문제를 해소하기 위해 만들어진 오픈소스 라이브러리
Document Image Analysis (DIA)
- Document Image Classification
- Layout Detection
- Table Detection
- Scene Text Detection
저자들은 LayoutParser 를 만들게된 주요한 이유로 크게 3가지를 지적했다.
- 딥러닝 모델은 재사용이나 확장이 어렵다.
⇒ DIA 수행 전 디버깅을 위한 사전비용이 상당하다.
- 문서 이미지는 도메인에 따라 다양한, 서로 다른 패턴을 가지고 있어 각 도메인에 맞는 학습을 해야한다그러나 이를 위한 목표 문서의 큐레이팅, 파인튜닝, 재학습 등의 기능을 제공하는 인프라가 없다.
- DIA를 수행하는 다양한 파이프라인이 존재하지만 이러한 방법론에 대한 문서화나 공유가 이루어지지 않고 있다.
⇒ 연구와 개발에 어려움을 만드는 주요한 요소로 작용한다. (높은 진입장벽, 중복된 개발내용, ...)
이러한 문제를 해결하기 위해 하나의 통합된 DIA 프레임워크로써 LayoutParser를 개발하였으며 주요한 기능은 다음과 같다.
- 딥러닝 모델을 DIA에 적용시키기 위한 툴킷
- pretrained model
- document image annotation tool, model tuning
- DIA 관련 모델, 파이프라인 등의 이슈 및 의견을 공유할 수 있는 커뮤니티
BACKGROUND
Deep Learning
- dhSegment : 문서 segmentation (FCN 활용)
- Faster/Mask RCNN : 문서 구성요소 인식, 테이블 인식에 활용
- Graph Neural Network: 테이블 인식
Open-Source tools for document processing
- OCR-D project : historical documents 분석을 위해 설계되어 있고, 최신 딥러닝 모델 적용 불가능
- DeepLayout : 레아이웃 분석 데이터셋으로 학습한 모델, DIA 파이프라인 x
- Detectron2-PubLayNet : 레아이웃 분석 데이터셋으로 학습한 모델, DIA 파이프라인 x
OCR engine
- Tesserect : OCR 이외의 다른 DIA를 지원하지 못함
- easyOCR : OCR 이외의 다른 DIA를 지원하지 못함
- paddleOCR : OCR 이외의 다른 DIA를 지원하지 못함
Dataset
- PRImA : magazine layout
- PubLayNet : academic paper layout
- Table Bank : tables in academic papers
- Newspaper Navigator Dataset : newspaper figure layout
- HJdataset : historical Japanese document layout
CORE
1. Layout Detection Models
딥러닝을 사용하지 않는 전통적인 방법론이 아닌, MaskRCNN, FasterRCNN 등의 딥러닝 기반의 Object Detection 을 활용한다.
import layoutparser as lp image = cv2.imread (" image_file ") # load images model = lp.Detectron2LayoutModel ("lp :// PubLayNet / faster_rcnn_R_50_FPN_3x / config ") layout = model.detect ( image )
LayoutParser에서는 다양한 언어 및 문서 종류, 기간을 커버하는 데이터셋으로 학습한 pre-trained 모델을 제공한다. 문제의 도메인과 유사한 데이터셋으로 학습된 모델을 선택하여 fine-tuning 시키는 경우 유용할 것으로 보인다. 현재 총 5개의 데이터셋에 대해 학습한 모델들의 카탈로그가 존재한다.
2. Layout Data Structures
DIA 파이프라인을 수행하는 과정에서 모델의 출력에 대해 다양한 PP가 적용해야 하는 경우가 많다. LayoutParser에서는 이러한 작업을 효과적으로 처리하기 위한 Data Structure를 제공한다. (Boxlist 와 같은 자료구조라고 이해하면 된다.) LayoutParser에서 제공하는 자료구조는 Coordinate, TextBlock, Layout 총 3가지이다.
- Coordinate : 레이아웃의 형태 및 좌표 정보를 표현
이를 위한 다양한 transformation(shift, pad, scale) 과 operation(union, intersect, is_in) 들이 구현.
뿐만 아니라 relative_to, condition_on 등의 레이아웃 사이의 관계 계산도 가능.
- TextBlock : 레이아웃 내의 다양한 요소들의 위치 및 특징(텍스트, 인덱스, 순서 등)을 저장
- Layout : 자신의 Coordinatie 와 TextBlock 의 리스트로 구성되며 다른 Layout을 포함하는 경우 계층 구조로 표현이 가능하다.
이러한 구조는 Coordinate 와 동일한 transformation과 operation을 사용하는 것과 TextBlock을 배치처리할 수 있는 장점을 제공한다.
복잡한 테이블 구조를 표현하기에도 적합한 구조로 보임. (교보생명)
3. OCR
LayoutParser 에서는 다양한 OCR tools 을 지원하는 통합된 인터페이스를 제공한다. 현재는 Google Cloud Vision OCR, Tesseract 를 지원하는 상황이며 딥러닝 기반 CNN-RNN OCR 모델도 제공한다. 딥러닝 기반의 OCR 모델은 학습이 가능하며 customized dataset 에도 적용할 수 있다고 한다. (github에는 추가되어있지 않은 것으로 보임)
ocr_agent = lp.TesseractAgent () # Can be easily switched to other OCR software tokens = ocr_agent.detect ( image ).detect ( image )
실제로 이 기능을 사용하는 경우 ocr-recognizer를 추가하여 파이프라인에 적용하는 것이 적합해 보인다.
4. Visualization and Storage
DIA 의 최종 목표는 문서 이미지의 분석 결과를 구조화된 형태로 변환하는 것이다.
LayoutParser 에서는 분석 결과를 JSON과 csv 로 내보내는 기능과 COCO(PubLayNet)와 PageFormat 과 같은 포맷의 데이터셋을 로드하는 기능, 그리고 분석된 데이터를 시각화 하는 기능을 포함한다
lp.draw_box ( image , layout ) # Mode I lp.draw_text ( image , tokens ) # Mode II
5. Customized Model Training
LayoutParser 에서는 아래와 같은 문제를 다루기 위해 데이터셋을 효율적으로 annotation 하는 기능과 customized model training 기능을 제공한다고 한다.
- 도메인이 전혀 다른 데이터셋으로 학습된 모델을 사용하는 경우 성능이 나오지 않을 확률이 높다.
- 다양한 도메인의 학습 데이터들은 공유되기가 어렵다.
이러한 문제를 여기서는 object-level active learning을 사용하여 해결하고자 하며 OLALA: Object-Level Active Learning for Efficient Document Layout Annotation 라는 논문의 방법을 적용했다고 한다.
Active Learning
1. Learn a Model : 레이블링 된 데이터(L)를 활용하여, 모델 학습
2. Select Queries : 학습된 모델을 통해서, 레이블링 되지 않은 데이터(U)에서 선별
(랜덤 선택이 아닌 선별된 데이터셋을 사용하는 경우 학습이 더 잘된다고 한다.)
3. Human Annotator : 사람이 레이블링
4. Training set : 새로 레이블링 된 데이터를 기존 dataset과 합친다.
5. 목표 성능 도달까지 위에 과정(1~4)을 반복한다.
OLALA
active learning 에서 사람이 라벨링하는 부담을 줄여주는 것을 목표로 한다. 주요한 기능은 다음과 같다.
- 모델의 출력 결과를 PP하여 반드시 annotation 해야할 영역을 제안
- 문서의 각 요소들은 겹치지 않는다는 특징을 활용하여 겹친 박스 혹은 중복 박스를 제거
- 예측하지 못한 영역, 점수가 낮아 박스가 생성되지 못한 영역은 supervision이 필요하다고 가정하고 이러한 영역을 annotation 대상으로 제안
Share article