반응형

Document Understanding 이란??

UiPath 소개 문구 번역

 

영수증 및 각종 서류를 읽어 데이터를 액셀, 텍스트 파일로 추출하는 것이다.

파일을 읽어 파싱하는 행위는 현 IT기술로도 충분히 가능한 영역이긴 하지만, DU는 아예 이미지로 구워진 PDF나 아날로그 문서 사진 역시 추출이 가능하다. 위와 같은 기술의 핵심 기술은 OCR이다.

 

광학 문자 인식 - 위키백과, 우리 모두의 백과사전

 

광학 문자 인식 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 포터블 스캐너로 실시간 광학 문자 인식(OCR) 과정을 보여주는 동영상. 광학 문자 인식(Optical character recognition; OCR)은 사람이 쓰거나 기계로 인쇄한 문자의 영상

ko.wikipedia.org

 

UiPath는 이 인식 엔진을 자체적으로 들고 있고 라이센스 가격에 아마 이 엔진이 포함된 것일 거다. 해당 엔진은 CJK 엔진에서 더 발전된 Extend 버전이 출시되면서(2025.01.22 기준) 200개의 언어를 지원하게 되었다.(한국어 포함)

Document Understanding - OCR

 

Document Understanding - OCR

Arabic'ا','ب','ة','ت','ث','ج','ح','خ','د','ذ','ر','ز','س','ش','ص','ض','ط','ظ','ع','غ','ـ','ف','ق','ك','ل','م','ن','ه','و','ى','ي','ٓ','ٔ','ٕ','٠','١','٢','٣','٤','٥','٦','٧','٨','٩','٪','٫','٬','٭','ٱ','۔',

docs.uipath.com

참고로 UiPath는 DU 관련 Docs가 워낙 많은 축이라 최대한 추려내서 사이트에 참조할 수 있도록 하겠다.

 

 

 

다음은 DU를 체험할 수 있는 최소 조건인 가격 정책부터 알아보겠다.

UiPath 가격 정책

우선, 해당 DU를 다루기 위해선 Action Center가 필요하며, 그러기 위해선 Pro 라이센스 이상 급이 필요한데, 한 달에 $420 > 2025.01.22 기준 60만원을 넘는다. (Enterprise는 가격이 없고 기업 정보 작성 란으로 이동한다... 별도의 컨텍 필요) (환율 때문에 회사사람들 고생 많다.) >> 아무튼 따라서 이번 시간엔 현실적으로 말 그대로 체험만 할 예정이니(본인도 그렇고), 이메일을 제공하여 Pro Trial 라이센스를 활용해 체험하는 것을 추천한다.

UiPath Pro Trial License

요 라이센스를 지급받는 건 이 문서에선 다루지 않겠다.

 

 

DU 준비 파일

앞서서 일단, 학습시킬 문서부터 부재일 것이다. 필자도 그랬다. 학습을 위해선 필연적으로 다량의 같은 형식으로 된 문서가 필요한데 일반적인 상황이면 그런 파일들은 존재하지 않는다.

 

따라서, 필자는 이번 포스팅을 위해 Invoice(송장) 문서 양식을 작성해 보았다. 기본 개념 전에 이 자료부터 확보하는 것이 우선인 것 같아 제작하게 되었으며, 필자의 경험(여기저기서 Invoice 문서를 본 경험)을 토대로 최대한 현실적인, 정보를 작성한 Invoice를 제작해보았다.

 

물론, Invoice를 출력한 회사는 가상으로 되어있으며(나라이름이 Galaxy인 상황;;;;) 청구인의 주소 및 개인정보는 모두 UiPath에서 제공하는 무작위 난수로 제작되었다.

자체 Invoice 설계 (액셀) 무작위 Invoice 생성 샘플 인보이스 (pdf)

 

Last Name, Given Name Activity
이름 무작위 생성
주소(Address) Activity
주소 무작위 생성
Random Number Acitivity
각종 수치 무작위 생성
Random String
각종 문자열 무작위 생성

사실 상 UiPath Studio에서 제공하는 모든 무작위 액티비티를 활용하여 작성한 것인데, 샘플을 보면 생각보다 꽤 그럴듯 하게 나왔고 본다. (경험 상 실제 Invoice 형태는 색상, 로고나 위치만 조금씩 다를 뿐 대부분 저런 방식이다.)

 

heaeny Company Invoice.zip
3.99MB

 

 

 

0. Document Understanding 개념도

Document Understanding Pipeline

 

전체적인 Pipeline은 이렇다. 총 다섯 단계이며, 3단계(문서 분류), 4단계(추출)에서 검증 및 학습이 반복되는 방식이다.

 

파이프 라인에서 나와있지는 않지만 Document Understanding은 ML Skill 즉, 기계 머신이다. 검증을 인간이 진행한다는 뜻이며, 여기서 딥러닝과 차이점이 드러나는데 딥러닝은 비지도학습(Unsupervised Learning), 저 파이프 라인에서 검증까지 모두 컴퓨터가 진행하는 것이다. 하지만 실상은 딥러닝은 연구쪽 기업은 머신러닝을 많이 쓰는 형태였다.

 

DU 파이프라인에서는 추출(Extract) 단계 중 학습, 검증 단계에서 라벨링이 들어가는데, 알아서 학습하는 딥러닝이 아니기에 일일이 사람이 라벨링 작업하는 행위가 필요하다.(보통 여기에서 개발자들이 많은 시간을 할애한다. 물론, 앞으로 어떻게 될 지는 모른다.)

 

1. Load Taxonomy, 분류법 불러오기

를 진행하기 전! 먼저 스튜디오에서 필요한 종속성부터 짚고 가겠다.

UiPath 홈페이지 참조
Document Understanding 의존성

 

UiPath.DocumentUnderstanding.ML.Activities

UiPath.IntelligentOCR.Activities

위 두 의존성이 필요하다. 체험하는 데에는 버전은 크게 상관 없다.

 

의존성을 성공적으로 받았는지 확인하기 위해선 디자인 툴 상단에 Taxonomy Manager(관리자)가 존재하는지, 작동하는지 보면 된다.

제일 우측에 생성된 Taxonomy 관리자
Taxonomy 관리자 창

 

해당 Taxonomy 과정에서는 분류법들을 Json 형식으로 저장한다. 이는 UiPath 상단에 Taxonomy 툴을 활용해 가능하다.

문서의 상황과 추출하기 원하는 필드를 매칭하여 필드를 정의하는 것이 바람직하겠다. 이번 시간에는 위 문서에서 Invoice Number, Total, Items 표 이 세 가지 필드를 추출해보겠다.

 

추출 전 Taxonomy 작성을 마친 모습이다.

 

+ 버튼을 이것저것 누르면서 추가하면 되는데, 순서로는

그룹 > 범주(생략 가능) > 문서 > 필드

순이다. 필드의 형식은 테이블도 제공한다.

 

생성한 필드로는 위에서 언급한 Invoice Number, Total, Items 가 있다.

 

스크립트 상에선 별 거 없다. 그냥 Load Taxonomy 액티비티를 가져오면 된다.

안에 분류법 역시 알맞은 변수를 새로 제작해 넣으면 된다. 해당 부분은 변수 생성 단축키 (Ctrl + K)를 활용하면 더 빠르다.

 

2. Digitize, 정보화

미리 마련된 UiPath OCR(간단히 UiPath 내 자체엔진으로 학습된 글자 읽는 인공지능이다.)로 문서를 한번 읽는다. 여기서 문서의 대략적인 정보를 파악한다.

 

OCR로 나온 데이터는 위치와 크기를 포함한 글자 더미만 나온다. 즉, 라벨링된 텍스트가 아니라는 점이다. 하지만 이 단계에서 얻고자 하는 것은 이 글자 더미를 통해 이 문서가 학습에 유효한 녀석인지 판단하고자 한 번 읽어드리는 것이다.

UiPath 혹은 다른 곳에서 제공하는 OCR을 통해(대부분 API로 지원) 간략하게 혹은 확실하게 문서의 글자들을 파악한다.

위 과정을 거치면 문서의 모든 (읽을 수 있는) 텍스트를 이제 다룰 수 있게 된다.

 

> 문서 경로: 읽을 문서 경로

> 문서 텍스트: 새로 생성 (Ctrl + K)

> 문서 개체 모델: 새로 생성 (Ctrl + K)

 

>> 위 설명대로 전자화가 완료되었으니, 추출된 텍스트를 바탕으로 변수에 할당한다든지, 분기를 마련한다든지의 행위가 가능해진다.

>>> 그럼, 이 시점에서 필자는 위와 같은 기술까지만 써도 되지 않겠냐는 질문이 생겼었다. 하지만, 차후 다룰 ML은 오로지 해당 문서만을 학습한 경우이기 때문에, 아래 쪽이 더 잘 읽을 수 있다는 기댓값이 더 크다.

 

3. Classify, 문서 분류

문서 분류 최소 조건

 

문서 분류를 위해선 같은 형식의 문서가 공식적으로 최소 10장은 준비되어야 한다.

권장 학습량은 필드당 50장이었던 걸로 기억한다....

Document Understanding - Build

 

Document Understanding - Build

After successfully creating your project and uploading your documents to a specific document type, they are automatically pre-annotated. This is done using a combination of generative and specialized models, based on the document type's schema. The schema

docs.uipath.com

 

 

 

Classifier 종류

Classify 종류는 크게 Keyword Based, Intelligent Keyword, Machine Learning 세 가지가 있다.

이 중에서 IKC, Intelligent Keyword 밖에 안 써서(거의 이것만 쓰더라...) 이것만 이야기 하겠다.

나머지는 차후에 기약이 없는 기록을 할 예정이다.

 

IKC를 활용하는 이유는 간단하다. Action Center를 활용하기 위해 미리 오케에 연결이 가정되어 있기에 그냥 그거 쓰는 것이다. 다른 Classifer는 별도의 연결을 또 준비해야한다. 문서 분류는 메인이 아니다. 여기에 너무 시간을 들이는 일은 하지 않았다.

 

IKC 활용 모습

 

Classify Scope 내에 원하는 분류자를 넣으면 된다.


> 문서 경로: 읽을 문서 경로

> 분류 법: 이전에 만든 것

> 문서 텍스트: 이전에 만든 것

> 문서 개체 모델: 이전에 만든 것

 

학습 파일 경로는 처음에 비어있을 것이나, 이 분류자를 설치하고 프로젝트 폴더를 보면 [DocumentProcessing]이라는 파일이 생성되어있을 것이다. (이전 Taxonomy 과정에서 보관을 위해 자동으로 생겼다.) 처리를 마치면 IntelligentKeywordClassifier.json 라는 제이슨 파일이 하나 떨어지는 데 이것 참조하면 된다.

 

앤드포인트와 API 키는 오케가 연결되어 있다면 알아서 잡아줄 것인데, 그래도 궁금하거나 별도의 서버 환경이면 아래에서 추가 확인을 해야한다.

 

앤드포인트: https://du.uipath.com/svc/intelligentkeywords (기본)

https://xxx.xxx.xxx/du_/svc/intelligentkeywords (On-Prem 환경 > du_ 붙는 것을 주의해야 한다.) >> 더 다른 환경은 아직 알지 못한다.

 

API: 오케 접속 > Admin > Licenses > Consumables > AI Units

 

 

API를 확인했다면 본격적으로 관리창을 띄워 기본적인 학습을 시켜주어야 한다.

관리 창 연 직후 학습 시작 연 직후

 

관리 창을 열고 [학습 시작]을 누르면 오른쪽 창이 뜨는데, 여기서 샘플로 학습할 파일을 [학습용으로 설정된 파일]에 넣어주면 된다.

 

heaeny Invoice 1 번 파일 학습

학습이 완료되면 저장 버튼 누르고 빠져나오면 된다.

++ 위 사진에는 안 되어 있지만 체크 박스를 눌러야 한다.

 

 

후에 Scope에서 요 만들어진 [분류자 구성]을 해주어야 한다.

분류자 구성

창을 열면 이와 같이 뜨는데, 다른 파일들과의 오차율을 택할 수 있게 된다.

그리고 꼭 해당 체크박스를 활성화하고 저장하면 된다.

 

여기까진 필자 로컬환경에서 모두 동일하게 오류 없이 작성되는 과정이다. 만일 오류가 발생한다면, 환경이나 세팅값이 잘못되었을 가능성이 농후하니 확인해야한다. (이건 본인한테 하는 말이기도 하다. 여튼 위와 같은 제작 과정을 3번 반복했고 모두 이상 없이 작동되었다.)

 

 

 

3-1. Classify Validate, 문서 분류 검증

이전 단계에서 OCR로 문서분류를 하는데... 애매하면 Orchestrator, Action Center라는 UiPath 자체 서버로 올려 사람이 직접 분류한다. 이 단계를 검증(Validate)이라 한다. 여기서 걸리면 서버로 올라가서 문서 분류 판단을 대기 중인 경우고 걸리는 경우 없이 통과면 OCR로 그냥 분류됐다는 의미다.

 

일단 뭐가 좀 긴데, 해당 로직 상황부터 설명하겠다.

일단 분기절로는 코드가 

duClassificationResults.Where(result => result.Confidence <= .5).Any() || duClassificationResults.Count() < 1


로 들어갔다. 쉽게 말하면 50 % 이하인 녀석이 한 건이라도 있을 시 Action Center 육안 검증을 진행하겠다는 이야기이다.

 

 

이제 Create 부터 살펴보겠다.

> 액션 제목: 아무거나

> 버킷 이름: 오케에 지정된 곳

> 버킷 디렉터리 경로: 오케에 지정된 곳

> 문서 경로: 읽을 문서 경로

> 분류 법: 이전에 만든 것

> 문서 텍스트: 이전에 만든 것

> 문서 개체 모델: 이전에 만든 것

> 자동 분류 결과: 새로 생성 (Ctrl + K)

> 액션 개체(출력): 새로 생성 (Ctrl + K)

 

 

UiPath에서 문서분류로 파악하지 못할 경우 Action 센터로 올리게 된다.

Action Center로 올라운 문서

 

앞 분기절에서 설정한 정확도가 너무 높거나 하면, 이렇게 조금만 달라도 오류로 간주하고 검증 센터로 올리게 된다.

우선 해결 방법으로는...

좌측 최 하단에 [Assign to Self] 클릭 > Pending 쪽에서 해당 문서 육안으로 파악 > 이상 없을 시 Submit 처리

 

혹은 너무 비슷한데 많이 올라오면 혹여 이전 과정에서 체크 박스가 풀려있는지, 다시 한 번 분기의 신뢰도 확인이 필수다.

 

이제 Wait 이다.

> 액션 개체(입력): 이전에 만든 것
> 액션 개체(출력): 이전에 만든 것

> 다운로드 디렉터리 경로: 지정된 문서 경로

> 문서 경로: 읽을 문서 경로

> 분류 법: 이전에 만든 것

> 문서 텍스트: 이전에 만든 것

> 문서 개체 모델: 이전에 만든 것

> 유효성이 검사된 분류 결과: 이전에 만든 것

 

이 액티비티는 별 거 없다. 위 Create에서 Action Center로 올린 뒤 올린 문서들이 전부 처리될 때까지 대기하는 역할이다.

단, 이 액티비티를 사용하기 위해선 몇 가지 세팅이 필요하다.

세팅 없이 진행할 경우, ST-DBP-024 (지속성 액티비티 확인) 오류가 발생한다.

 

 

3-1-1 확인점. 프로젝트 세팅

프로젝트 설정 진입(우클릭) 일반 옵션 지속성 지원 활성화

 

3-1-2 확인점. 워크플로 세팅

Wait 액티비티를 사용한 워크플로

 

지속성 액티비티 관련하여 챙겨야 할 부분은 크게 두 가지이며 첫째로는 해당 프로젝트가 지속성을 지원해야하고 둘째로는 진입점을 Wait 액티비티를 쓴 쪽에 잡아줘야 한다는 것이다.

 

 

 

여기까지 달려왔지만, 문서가 너무 긴 관계로 추출 부분부터는 다음 글에서 다루도록 하겠다.

반응형

'RPA' 카테고리의 다른 글

UiPath Document Understanding: Extract, Export  (0) 2025.01.31
UiPath Excel to HTML  (2) 2024.11.27
UiPath 0xc0000005 오류  (0) 2024.11.25
Content Generation - 생성형 인공지능  (0) 2024.09.04
UiPath Image 처리  (0) 2024.08.23
Posted by heaeny
,