---
# System prepended metadata

title: Layout Parser 介紹

---

# Layout Parser 介紹

## Git 專案資訊

### 專案名稱與連結（GitHub URL）

[Layout Parser](https://github.com/Layout-Parser/layout-parser)

### 專案定位

Layout Parser 的目標是建立一個統一、開放且易於擴充的框架，讓文件圖像分析（Document Image Analysis）成為一個標準化的研究與應用流程。

### 專案用途

文件圖像分析的流程主要有以下步驟：

1. Preprocessing
2. Layout Detection
3. Character Recognition
4. Postprocessing
5. Storage

各步驟都需要使用各種 Model，難以整合，開發不便，使用不易 

而 Layout parser 做了以下整合

- Layout Detection
  - 提供 11 個 pre-trained Model
    - 主要是 `faster_rcnn`、`mask_rcnn`、`retinanet`，他們分別用 6 個 dataset 去 train 這 3 種架構，當作 11 個不同的 Model
      - HJDataset：日文歷史文件
      - PubLayNet：期刊、預印本
      - PrimaLayout：當代文件、主要是雜誌、科學刊物
      - Newspaper Navigator：報紙（Chronicling America）
      - TableBank：各種文件上的表格
      - Math Formula Detection(MFD)：數學式子
  - 支援 3 種 backend
    - Detectron2
    - EfficientDet
    - PaddleDetection
- Character Recognition：提供兩種 OCR 引擎的 API（不含引擎本身）
- Postprocessing：將不同 Model 辨識出的文件布局格式整合為統一的 Layout 物件，並提供方便的視覺化函式，以及基於各區塊位置訊息的操作（選取、分組...等）
  - Layout：基本上就是 block 的 list
    - block：基本上就是個 dict，代表著 Model 辨識出來的一個區塊，紀錄位置、Type、score 等資訊
- Storage：雖未提供直接將 Layout 物件導出的函式，但有將 Dataframe（pandas）、dict、CSV、JSON 格式的 Layout 資料轉成 Layout 物件的函式，且因為 Layout 物件繼承自 List，要存成上述格式不困難。

### 特色

- 使用簡單：把各種 Model 跟 OCI 統一成 Layout Parser 自己的 API，只需要 `pip install layoutparser` 就能用（但 Model 跟 OCR 要額外弄） 
- 多功能：提供多種函式
- 可客製化
- 可擴充：官方提供的 Layout 辨識 Model 與 OCR 引擎選項有限，可以根據它的 code 實作一個相同介面的 class 去串接自己的模型
- open platform：官方有個 [Layout Models & Pipelines Sharing Platform](https://layout-parser.github.io/platform/) 可以讓人上傳 Model，但上面只有 2021 年官方上傳的東西而已

### 作者／維護者與更新時間

Layout Parser 是一個由研究者發起、由開源社群維護的專案。

論文作者 Zejiang Shen, Ruochen Zhang, Melissa Dell, Benjamin Charles Germain Lee, Jacob Carlson & Weining Li 

Github repo 上次更新時間：Apr 6, 2022

### 專案整體印象

Layout Parser 本身主要是把文件辨識流程的一些工具整合起來，讓人可以透過統一的介面進行操作，不過疏於維護，也沒在更新了（latest commit: 3 years ago），且模型選項有限，雖然我沒有實際單獨分開使用過它包起來的那些工具，所以不確定 Layout Parser 幫忙省了多少事，不知道會不會不如自己串一串還比較有彈性。

