Data Manager에서 직접 지원하지 않는 OCR 엔진을 사용하여 레이블링하는 방법

요즘 많은 고객들이 문서 처리를 자동화하기 위하여 UiPath Document Understanding을 검토하고 있습니다. UiPath DU는 문서에서 필요한 데이터를 추출하기 위하여 다양한 추출기를 사용할 수 있는데, 그 중 Machine Learning Extractor를 사용하려면 모델을 만들어 학습시키는 과정이 필요합니다.

ML 모델을 학습시키려면 학습에 사용할 문서들을 확보한 후 각각의 문서에서 필요한 데이터가 무엇인지 표시하는 레이블링 작업이 선행되어야 합니다. 이 작업에 사용하는 도구가 Data Manager인데, 문서를 레이블링하기 위하여 먼저 OCR 엔진을 적용하여 digitize하는 과정이 필요합니다. Data Manager가 현재 지원하는 OCR 엔진은 아래의 4가지입니다.

  • UiPath Document OCR
  • Google Cloud Vision OCR
  • Microsoft Read OCR
  • OmniPage OCR

UiPath Document OCR을 제외한 나머지 세 개의 OCR은 한글을 지원합니다. 하지만 이 중에 인터넷 연결 없이 on-premise 방식으로 사용할 수 있는 것은 OmniPage 뿐입니다. 금융권을 비롯한 많은 고객사의 문서들은 외부로 유출되어서는 안되기 때문에 클라우드 OCR을 사용할 수 없다는 현실적인 제약이 있는데 이것을 만족하면서 한글을 지원하는 OCR 엔진은 OmniPage가 유일합니다. 그런데, Data Manager가 현재 제공하는 OCR 엔진 인터페이스에는 언어를 지정하는 기능이 아직 없습니다. 향후 추가할 계획을 가지고 있습니다만 아직은 언제가 될지 모르는 상황입니다.

OmniPage OCR로 한글 문서를 처리할 때 한글(KOR)이라고 지정해준 인식 결과와 언어를 지정하지 않은 인식 결과에는 큰 차이가 있습니다. 언어를 지정하지 않으면 한글 인식률이 급격히 떨어져서 사용하기 어려운 수준이 됩니다.

아래에 첨부한 워크플로우를 사용하면 이런 제약을 극복할 수 있습니다. 로봇이 사용할 수 있는 모든 OCR 엔진을 사용하여 문서를 Digitize 할 수 있고, digital text를 이미 가지고 있는 native pdf 문서인 경우 OCR을 적용하지 않고 digital text를 그대로 Data Manager에서 사용할 수도 있습니다.

datamanager-ocr.zip (5.5 KB)

전체 워크플로우는 아래와 같습니다.

datamanager-ocr.zip 패키지의 압축을 해제하면 두 개의 빈 폴더가 폴더가 생성되는데, 그 중 Documents 폴더에 레이블링 대상 문서를 넣어주면 됩니다. 첨부한 워크플로우에서는 ABBYY FineReader OCR을 사용하고 있는데, 문서에 적합한 OCR로 교체하여 사용하면 됩니다. 아래의 그림과 같이 Digitize Document 액티비티의 ForceApplyOCR을 False로 설정했기 때문에 native pdf 문서에는 OCR을 적용하지 않게 됩니다.

image

워크플로우를 실행하고 나면 ToDataManager 폴더에 OCR을 적용한 결과가 저장됩니다. 이 폴더를 zip으로 패키징하여 Data Manager에서 import 하면 아래와 같이 ML Extractor Trainer에서 저장한 문서들을 import 한다는 것을 자동으로 감지하고, 이미 OCR이 적용된 문서들이기 때문에 OCR을 적용하지 않고 그대로 사용하게 됩니다.

Data Manager에 설정한 OCR을 사용하지 않기 때문에 Data Manager에는 OCR을 설정할 필요가 없습니다. 스키마에는 "dummy"라는 이름을 가진 string 타입의 regular field 하나만 정의되어 있으면 됩니다. 이 필드를 삭제하고 필요한 필드들을 정의한 후 레이블링을 진행하면 됩니다.

위의 그림에서는 세 개의 문서를 import 하고 있지만 예시의 목적으로 적은 수를 한 것이고, 최소 10개 이상의 문서를 import 하는 것을 권고합니다. 숫자가 너무 적으면 Train / Validation split 과정에서 필요 이상으로 validation 개수가 많아지거나 적어질 수 있습니다.