2024. 10. 12. 16:27ㆍ관심있는 주제/GNN
해당 글은 ChatGPT 4o With canvas로 만들었습니다.
문서를 파싱하는 것까지는 많은 오픈 소스랑 논문들이 있지만, 이 순서를 잘 정리해 주는 방법에 대한 것들은 많이 찾아보기가 어려웠다. 그래서 곰곰이 생각했을 때 각각의 파싱 된 결과를 노드로 생각하고 그것을 읽는 순서를 엣지로 정의하면 좀 더 쉽게 풀리지 않을까 싶은 생각에 시도했다가 생각보다 잘 되지 않았다.
그래서 Reading Order에 대한 논문을 찾던 도중 구글에 다니는 분들이 쓴 논문이 있어서 살펴봤다.
내용중에서 그래프랑 이미지를 같이 쓰는 것과 초기 edge를 어떻게 정의하는지가 눈에 띄었다.
문서 읽기 순서 예측의 중요성
문서 내의 텍스트가 어떤 순서로 읽혀야 하는지 예측하는 것은 매우 중요한 과제입니다. 특히, 다중 열 구조나 표, 테이블 등 복잡한 레이아웃이 포함된 문서에서는 **읽기 순서(reading order)**를 정확하게 예측하는 것이 어렵습니다. 이 글에서는 두 가지 접근 방법인 β-skeleton 그래프와 **GCN(Graph Convolutional Network)**을 통해 문서의 읽기 순서를 예측하는 방식을 쉽게 설명하고, 이를 통해 얻은 성과와 한계점을 소개합니다.
β-Skeleton 그래프와 GCN 기반 읽기 순서 예측
2023년 논문에서는 β-skeleton 그래프와 GCN을 결합하여 문서의 텍스트 라인 간의 관계를 분석했습니다. 여기서 β-skeleton 그래프는 텍스트 상자들 간의 공간적 관계를 시각적으로 표현하는 도구로, 인접한 텍스트 상자 간의 연결을 만들어 문서 구조를 분석하는 데 도움을 줍니다. 이를 통해 읽기 순서와 문단 그룹화를 학습할 수 있습니다.
주요 개념 쉽게 이해하기
- 노드 예측: 문서 내의 텍스트 상자를 노드로 정의합니다. 각 텍스트 상자가 행(row) 형태로 읽혀야 하는지, 아니면 열(column) 형태로 읽혀야 하는지를 예측하는 과정입니다.
- 엣지 예측: 텍스트 상자 간의 **엣지(연결선)**를 정의하여, 두 텍스트 상자가 같은 문단에 속하는지 여부를 판단합니다. 이 예측을 통해 문서의 각 텍스트 상자가 어떻게 연결되어 읽혀야 하는지를 결정하게 됩니다.
- β-Skeleton 그래프: β-skeleton 그래프는 텍스트 상자들 간의 공간적 관계를 시각적으로 표현하는 그래프입니다. 인접한 텍스트 상자들 사이에 연결선을 만들어 문서의 구조를 파악하고, 이를 통해 읽기 순서를 예측하는 데 도움을 줍니다.
모델 프로세스 설명
Fig. 4에서 제시된 읽기 순서 예측을 위한 다중 분류 모델의 프로세스는 다음과 같습니다:
- 입력 이미지 처리: 문서 이미지가 MobileNetV3를 통해 **이미지 특징 맵(image feature map)**으로 변환됩니다. 이때 이미지는 512x512 크기로 조정됩니다.
- OCR 및 β-Skeleton 그래프 생성: 문서에서 텍스트 라인 상자들이 **OCR(광학 문자 인식)**을 통해 추출되고, 이 텍스트 라인 상자들을 이용해 β-skeleton 그래프가 생성됩니다.
- Edge RoI Pooling: 생성된 이미지 특징 맵을 사용하여 엣지 박스들에 대해 Edge RoI(Region of Interest) 풀링을 수행합니다. 이를 통해 문서의 각 엣지 부분에 대한 공간적 특징을 추출하게 됩니다.
- 메시지 패싱과 Attention Pooling:
- 메시지 패싱(Message Passing): 각 노드 간의 정보를 전달하며 노드 특징을 학습합니다. 이를 통해 문서 내의 텍스트 상자들이 서로 어떤 관계를 가지고 있는지 이해하게 됩니다.
- 어텐션 풀링(Attention Pooling): 각 노드와 엣지 특징을 학습하기 위해 어텐션 메커니즘을 사용하여 중요한 특징에 더 집중할 수 있도록 합니다.
- 노드 및 엣지 분류:
- 노드 분류(Node Classification): 각 텍스트 상자가 **어떤 읽기 순서 패턴(예: 행 또는 열)**을 가지고 있는지 예측합니다.
- 엣지 분류(Edge Classification): 각 엣지가 같은 문단에 속하는지 여부를 예측하여 문단 그룹화를 수행합니다. 이를 통해 문서 내에서 텍스트의 논리적인 순서를 파악할 수 있게 됩니다.
라벨링과 알고리즘 설명
문서의 읽기 순서 예측을 위해 라벨링과 여러 알고리즘이 사용되었습니다. 각 알고리즘은 β-skeleton 그래프와 GCN의 노드 및 엣지 예측 결과를 활용하여 문서의 구조를 분석합니다.
데이터 라벨링(Annotations)
Fig. 7에서 볼 수 있듯이, 데이터 라벨링은 인간이 주석으로 정의한 문단과 읽기 순서를 기반으로 합니다. (a) 이미지는 사람이 직접 정의한 문단과 읽기 순서의 주석을 보여주고 있으며, (b) 이미지는 주석된 데이터를 기반으로 모델이 추론한 읽기 순서를 보여줍니다. 각 문단의 읽기 순서는 수직 패턴(보라색 선)과 수평 패턴(녹색 선)으로 나타내며, 이를 통해 문서의 읽기 순서를 더욱 명확하게 정의합니다.
Algorithm 1: 계층적 클러스터링 (Hierarchical Clustering)
- 클러스터링 목표: 텍스트 라인 간의 관계를 기반으로 문단을 형성하고, 각 문단을 초기 클러스터로 정의합니다. 이후 같은 행 또는 같은 열 패턴을 가진 텍스트 라인들을 묶어 더 큰 **클러스터(그룹)**로 만듭니다. 이 과정은 문서 내에서 텍스트의 구조적 배치를 반영하여 자연스러운 읽기 순서를 예측하는 데 중요합니다.
- 엣지 예측 활용: β-skeleton 그래프의 엣지와 GCN을 통해 텍스트 상자 간의 연결을 분석하여 클러스터 간의 관계를 정의합니다.
- 섹션 간 관계 학습: 텍스트 라인들이 같은 행(row) 또는 **열(column)**에 속하는지를 판단하고, 그에 따라 클러스터를 병합합니다.
Algorithm 2: 클러스터 내 읽기 순서 정렬 (Reading Order Sorting within a Cluster)
- 회전 각도 정렬: 각 텍스트 상자의 **회전 각도(α)**를 계산하고, 모든 상자를 회전시켜 수평/수직 축 정렬 상태로 만듭니다.
- 축 정렬 및 순서 결정: 축이 정렬된 상태에서, 각 텍스트 상자의 **중심 좌표(X, Y)**를 기준으로 읽기 순서를 결정합니다. 예를 들어, 열(column) 기반으로 정렬할 때는 X축 기준으로, 행(row) 기반일 때는 Y축 기준으로 정렬합니다.
- 위상 정렬(Topological Sorting): 정렬된 텍스트 상자들을 순차적으로 연결하여 최종 읽기 순서를 결정합니다.
Algorithm 3: 패턴 라벨링 (Pattern Labeling from Annotated Reading Order)
- 문단 간 관계 정의: 각 문단 간의 기하학적 관계를 수직(vertical), 수평(horizontal), 또는 **알 수 없음(unknown)**으로 분류합니다. 이를 통해 문서의 읽기 순서를 더욱 명확히 합니다.
- 읽기 패턴 결정: 문단 간의 관계를 기반으로, 해당 문단의 읽기 패턴을 결정합니다. 예를 들어, 이전과 다음 문단이 모두 수직 관계라면 해당 문단은 열(column) 기반으로 분류됩니다.
주요 한계점
이 논문에서 사용된 접근 방식에는 몇 가지 한계점이 있습니다:
- 복잡한 다중 섹션 레이아웃의 한계: 단순한 노드와 엣지의 분류만으로는 복잡한 다중 섹션 간의 관계를 충분히 반영하지 못할 때가 있습니다. 특히, 여러 개의 테이블이나 섹션이 있는 문서에서는 이러한 한계가 더 두드러집니다. 예를 들어, 서로 다른 테이블이나 열들이 아주 가까이 있을 경우 잘못된 읽기 순서가 예측될 수 있습니다.
- 테이블 구조의 정확한 분석 부족: 테이블처럼 복잡한 구조의 경우, 문서의 각 텍스트 상자가 퍼스펙티브 왜곡(문서의 각도가 틀어져 보이는 현상)이나 기울어진 상태로 배치될 수 있습니다. 이러한 경우에는 잘못된 읽기 순서가 예측될 수 있으며, 이런 복잡한 구조는 별도의 테이블 구조 예측 모델을 사용해야 더 나은 성능을 기대할 수 있습니다.
논문의 성과와 개선 방향
β-skeleton 그래프와 GCN을 결합한 이 접근 방식은 문서의 텍스트 상자 간의 관계를 잘 모델링할 수 있었습니다. 이를 통해 간단한 문서 레이아웃에서는 좋은 성과를 얻을 수 있었지만, 복잡한 문서 레이아웃을 처리하기 위해서는 추가적인 고차원적 구조 분석이 필요합니다. 예를 들어, 문서의 각 섹션 간 관계를 더 잘 이해하려면 문서 전체의 구조를 학습하고 분석하는 것이 필요합니다.
결론
β-skeleton 그래프와 GCN을 사용한 접근 방식은 문서의 텍스트 상자 간의 관계를 파악하여 읽기 순서를 예측하는 데 효과적입니다. 하지만, 복잡한 다중 섹션 레이아웃이나 테이블 구조를 정확히 분석하기 위해서는 고차원적인 구조 분석과 시각적 단서를 추가로 활용할 필요가 있습니다. 이러한 개선을 통해 문서의 읽기 순서 예측 성능을 더욱 높일 수 있을 것입니다.
출처
- 논문 1: "Text Reading Order in Uncontrolled Conditions by Sparse Graph Segmentation"
'관심있는 주제 > GNN' 카테고리의 다른 글
[내용 정리] Graph Structure Learning: 왜 중요한가, 무엇이 좋은가? (2) | 2024.10.12 |
---|---|
[TODO] 그래프 타입 알아보기 (0) | 2022.06.25 |
hyper graph 관련해서 도움이 되는 글들 (0) | 2022.05.08 |
Python) Cora dataset을 활용하여 Link Prediction (4) | 2022.01.29 |
Python) Fraud detection with Graph Attention Networks (0) | 2022.01.28 |