ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 한글 문서파일 파싱(Parsing) 기법 - 취소선 처리
    카테고리 없음 2025. 1. 9. 12:39

    1. 취소선 정보 파악을 위한 접근 방법

    1.1 텍스트 레이어 기반 탐지

    1. PDF의 구조 분석:
      • PDF는 텍스트와 그래픽 객체로 구성됩니다.
      • 취소선이 그어진 텍스트는 일반적으로 텍스트 객체와 선(그래픽 객체)로 구성됩니다.
      • PDF 분석 라이브러리(e.g., PyPDF2, PDFMiner, pdfplumber)를 사용하여 텍스트와 그래픽 객체를 추출.
    2. 텍스트와 선의 관계 분석:
      • 텍스트의 좌표(Bounding Box)와 선(취소선)의 좌표가 겹치는 경우 해당 텍스트를 취소된 것으로 간주.
      • PDFMiner의 LTLine 객체를 활용하거나 pdfplumber의 도형 탐지 기능 사용.

    1.2 이미지 기반 탐지

    1. PDF를 이미지로 변환:
      • 취소선 정보가 이미지 형태로 포함된 경우, PDF를 이미지로 변환.
      • Python의 PyMuPDF(fitz) 또는 pdf2image 라이브러리 활용.
    2. 이미지 처리로 취소선 탐지:
      • OCR(광학 문자 인식):
        • Tesseract OCR을 사용하여 텍스트를 추출.
      • 취소선 탐지:
        • OpenCV 등의 이미지 처리 라이브러리를 사용하여 텍스트 위의 선을 탐지.
        • 주요 기법:
          • Canny Edge Detection으로 선 감지.
          • Hough Line Transform으로 직선 탐지.
          • 선의 위치가 텍스트 Bounding Box와 겹치면 취소선으로 판단.

    1.3 취소선이 그어진 텍스트 삭제

    1. 탐지된 취소선 정보를 기준으로 취소된 텍스트를 필터링.
    2. 취소된 텍스트만 제거하고 나머지 텍스트를 저장.

    2. 구현 전략

    2.1 사용 가능한 Python 라이브러리

    1. PDF 처리:
      • PyPDF2: PDF의 텍스트와 그래픽 객체 추출.
      • PDFMiner: 텍스트 좌표와 레이아웃 정보를 포함한 구조적 분석.
      • pdfplumber: PDF의 텍스트, 이미지, 그래픽 객체를 직관적으로 추출.
    2. 이미지 처리:
      • pdf2image: PDF를 이미지로 변환.
      • OpenCV: 이미지에서 취소선 탐지.
      • Tesseract OCR: 텍스트와 그래픽 요소를 포함한 이미지 텍스트 추출.

    2.2 예제 워크플로우

    import fitz  # PyMuPDF
    import cv2
    import pytesseract
    from pdf2image import convert_from_path
    
    # 1. PDF를 이미지로 변환
    pages = convert_from_path('등기부등본.pdf', dpi=300)
    
    for page_number, page in enumerate(pages):
        # 2. 이미지를 OpenCV 형식으로 변환
        image = cv2.cvtColor(np.array(page), cv2.COLOR_RGB2BGR)
        
        # 3. OCR로 텍스트 추출
        text = pytesseract.image_to_string(image, lang='kor')
        
        # 4. 이미지에서 취소선 탐지
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        edges = cv2.Canny(gray, 50, 150)
        lines = cv2.HoughLines(edges, 1, np.pi/180, 200)
    
        for line in lines:
            rho, theta = line[0]
            a, b = np.cos(theta), np.sin(theta)
            x0, y0 = a * rho, b * rho
            x1 = int(x0 + 1000 * (-b))
            y1 = int(y0 + 1000 * (a))
            x2 = int(x0 - 1000 * (-b))
            y2 = int(y0 - 1000 * (a))
            # 취소선 그려진 경우 해당 영역과 텍스트 연관 분석
            cv2.line(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
    
        # 5. 취소선 탐지된 텍스트 처리
        # 좌표를 기준으로 OCR 결과에서 제거
     
     
     

    3. 취소선 탐지의 주요 고려사항

    1. 취소선의 스타일:
      • 단일 선, 이중 선, 점선 등 다양한 취소선 스타일을 지원해야 함.
    2. 텍스트와 선의 관계:
      • 취소선이 텍스트와 명확히 겹치는 경우만 탐지하도록 좌표와 Bounding Box를 정밀히 분석.
    3. 다양한 파일 형식 지원:
      • HWP 파일은 한글파일 전용 라이브러리(e.g., pyhwp)를 사용하여 텍스트를 우선 추출 후 동일 로직 적용.

    4. 결론

    PDF에서 취소선을 탐지하여 관련 정보를 필터링하려면 텍스트 레이어 기반 접근이미지 처리 기반 접근을 병행해야 정확도가 높아집니다. 위의 워크플로우를 기반으로 시스템을 개발하면, 취소선 정보를 포함한 데이터 정제 및 신용평가에 활용 가능한 클린 데이터를 확보할 수 있습니다. 추가 지원이 필요하면 말씀해주세요!

Designed by Tistory.