[ AutomateOne 이론 ] 정형문서와 비정형문서 처리

jwKim·2023년 9월 14일

1. TCD(Table classifier detector)

  • 하나의 프로젝트에서도 테이블이 여러 종류가 함께 들어오는데, 그 테이블들을 같은 유형끼리 분류해주는 역할 수행
  • 원래 프로젝트에서는 데이터를 다 확인하고 어떤 정보를 추출할지 계획을 세워야하는데, 이번 실습에서는 그냥 테이블을 추출하는 것에 집중해보기
  • 사용하는 툴 소개
    • Analyze structure : 테이블을 찾아내고, 행과 열을 선을 기준으로 확인
    • Classify Table : 위에서 탐지한 선들을 기준으로 문서를 그룹화(그릅화 하는 기준은 행과 열 개수)
    • Make Template : 그룹별로 대표 템플릿을 만들고 하나의 탬플릿을 선택
    • Edit Template : 만든 템플릿에서 어떤 정보를 가져올지 설정
    • Process Files : 데이터 가져오는 작업
    • Build MS Package : MS 툴로 가져오는
    • Deploy Package : 모델 배포
  • 작업 방법론 => 결과적으로 어떤 데이터던 누락되는 데이터 없이 모두 분류해주는게 중요!!
      1. 구조분석 후 모든 데이터가 분류될 때까지 다시 구조 분석
      1. 최종적으로 정보추출까지 한 다음에 아웃라이어를 빼주는 옵션을 사용해서 다시 구조 분석
  1. Analyze structure
  • 테이블 영역 설정(테이블 외에 다른 글자가 들어가면 성능이 저하될 수 있으므로 정확히 넣어주기) -> Margin을 조절
  • 디텍팅 순서 : 테이블에서 행을 먼저 찾기 -> 한 행 내에서 열을 구분하는 세로선 찾음
  • 여러 옵션 제공
    • Blur : 노이즈가 많을 때 지정 -> 블러처리를 하면 테이블 내에서 선보다 노이즈가 더 많이 지워질 것임(선은 진하니까)
    • Row : 행을 먼저 판단할 때 Margin으로 지정한 영역 내부에서, 왼쪽 끝에서 오른쪽 끝까지 선이 몇 %가 그어져 있어야 선으로 인식하는지를 설정
    • table type
      • one table : 여러 개의 테이블이 있을 때 하나의 테이블로 지정하겠다
      • Thin Cell line : 선이 얇을 때 사용하는 옵션
      • Open Cell : 양 옆 테두리가 열려있는 셀을 인식
    • Deskew : 테이블이 약간 틀어진 경우
    • Stick Margin : Open Cell 사용할 때 마진을 조금 더 잘 지정하게 도와줌
    • Remove Dark Spots : 가끔씩 컬럼 이름을 지정한다고 검게 칠해놓은 경우가 있는데, 그 검은색을 지우고 탐지
  • 탐지한 가로선, 세로선은 빨간 색으로 표시됨 / 전체 문서에서 잘 탐지를 하는지 확인 해야함 -> 최대한 모든 문서에서 탐지를 잘 할 수 있는 파라미터를 찾기
  1. Classify Table
  • 앞서 테이블에서 선들을 파악한 것을 기준으로 문서의 class 를 나눔
  • classify하는 기준은 Auto가 있는데, Auto는 잘 분류가 안될 수 있으므로 Manual로 class를 직접 설정하고 분류하기
  • 이번 실습에서는 행이 28개로 나온 애들과 28개가 아닌 애들로 나누기
  • class를 지정하고 classify를 누르면, 지정한 기준대로 클래스별 데이터를 나누기 완료!
  1. Make Template
  • class별로 탬플릿을 만드는 과정
  • Max candidate count : 대표 탬플릿을 만들 때 사용할 후보 데이터 개수 지정
    • Max candidate count에 지정한 개수만큼 잘 분석이 된 데이터가 반환됨(보통 맨 앞에 나온 테이블이 가장 잘 분석된 테이블)
  • 모든 데이터가 구조분석이 잘 이루어져야함 -> class별로 계속 반복 수행
  1. Edit Template
  • 추출할 정보 위치를 지정하는 과정
  • 추출 영역 선택 방법
    • select(커서 버튼) : 하나의 셀을 선택
    • 올가미 버튼(점선 네모) : 하나 이상의 cell을 묶어서 선택 -> 드래그 해서 필드로 설정
  • cell 옵션
    • Field Type : OCR 타입 지정 -> 한 줄인지 두 줄인지
    • Area : OCR할 때 공백이 많이 들어가면 잘 안됨 -> 좌측 상단을 기준으로 x1, y1, x2, y2를 지정(좌표)
    • MS Servie Name : OCR 서비스 연결
  1. Process Files
  • Minimum Target Score : 추출 성공/실패를 판단할 기준을 제시 (예 : 90%로 설정하면, 90% 이상 추출 되어야 성공적인 추출이라고 판단)
  • Result Summary에 추출 결과가 나옴
  • 파일로 export
    • 엑셀 파일로 반출해야 결과를 확인할 수 있음 -> 결과에 따라 셀 색깔로 표시하는데(오류나면 빨간색 등) csv는 셀 서식 지정이 안되니까 보기 힘드니까 엑셀로 반출하기
  • 결과에 [X]라고 되어있는 거는 OCR 검증이 안된 데이터임(OCR 모델 여러 개를 돌려서 voting 형식으로 값을 반환하기 때문에 검증 기능이 있음)
  • 결과를 보고 OCR이 잘 안된 셀들을 대상으로 Edit Template의 셀 범위를 재지정해주거나 수정한 후 다시 정보 추출하기

MERGE 기능

  • OCR 영역을 선택하는데, 테이블 인식이 잘 안되면 데이터 추출이 정확히 되지 않거나 오류가 발생함 <- 선 추출이 잘 안된 경우 때문임
  • 이럴 때 사용할 수 있는 방법이 merge 임
    • Edit Template에서 merge가 필요한 셀이 포함된 row 전체를 하나의 필드로 잡아줌
    • Area 범위를 조정해서 필요한 부분만 필드로 설정하기
  • 원래는 셀 위치를 행 개수, 열 개수로 기준으로 설정하는데, merge를 열 전체를 기준으로 그 열에서의 절대 위치를 설정해버리는 거임
  • 그 후 선이 구분 잘 된 셀들은 Edit Template에서 하던 방법대로 바꾸면 됨

2. AIDA Designer IEX

  • 비정형 문서를 다루는 툴

  • 룰과 파이프라인을 짜서 문서를 분류하고 특정 타이틀이나 정보 추출

  • 툴 사용 방법

    • 툴 사용을 위해서는 세 개의 빈 폴더를 만들어야함("design", "ren", "result")
      • design : 룰 만들 때 참고로 사용할 샘플 이미지를 넣어놔야함
        - run : 실제 프로젝트에서 사용할 이미지를 넣어놔야함
        - result : 분석 결과가 저장될 폴더
    • 파이프라인과 룰을 기반으로 태스크 수행
      • 파이프라인 : 이 과제가 어떤 태스크인지, 어떤 서브태스크가 있는지 설정 (예를 들면 전처리기, 텍스트 검출기, 텍스트 인식기, 정보 추출기 ... 등)
        => readme.md에 있는 처리기 추가해주기
      • 룰 : 데이터를 어떻게 처리할 것인지
        • 지정한 키워드가 존재하는 라인을 찾는 룰 설정
          - 라인 안에서 정확히 어떤 값을 설정할 것인지 지정
          - 룰은 위에서부터 순서대로 순차적으로 수행 그래서 '사업자등록증'과 '사업자등록증명'을 판단하는 태스크에서는 '사업자등록증명' 룰을 먼저 써주면 걸러질 수 있음
          - 하나의 룰에도 여러 조건을 제시할 수 있음
  • 분류 태스크에서는 주로 문서 제목을 보고 분류하는데, 이 때 노이즈가 껴있으면(도장이 찍혀있는 등) 제목으로 찾을 수 없으므로 문서 내부에 있는 유니크한 표현을 기준으로 문서 분류 작업 하기

  • 배포한 프로그램 사용하기

    • VS코드 익스텐션 깔기
      • Base 64 Viewer
        - REST Client

0개의 댓글