opencv를 활용한 pdf 데이터 추출
데이터 전처리
Pdf는 테이블 형태로 되어있습니다. Pdf에서 테이블을 감지하려면 테이블의 선이 명확해야합니다. 이미지를 흑백이미지로 변환하여 테이블의 경계를 뚜렷하게 하고 테이블 정보를 추출하기 용이하게 만들었습니다.

테이블에 학식 정보만 담겨있으면 좋겠지만 불필요한 노이즈가 섞여있습니다. 예를 들면, 고기메뉴 옆에 돼지 이모티콘과 하트 이모티콘입니다. 이모티콘은 테이블 선을 가려서 윤곽선을 감지하는 것을 방해합니다.

끊긴 선을 연결하기 위해 dilation 함수로 선을 연결하였습니다.
Dilation
Erosion과 반대로 대상을 확장한 후 작은 구멍을 채우는 방법입니다. Erosion과 마찬가지로 각 pixel에 structuring element를 적용합니다. 대상 pixel에 대해서 OR 연산을 수행합니다. 즉 겹치는 부분이 하나라도 있으면 이미지를 확장합니다.

이미지의 전처리를 마무리했습니다. 전처리는 이미지 해석을 위해 데이터를 가공한 단계였습니다.
데이터 추출
Cv2.findContour 함수는 이미지 처리 함수 중 하나로, 이미지에서 윤곽선을 찾아줍니다. 이미지의 윤곽선을 찾으면 다음과 같은 결과를 얻을 수 있습니다.

박스를 감지하고 박스 안의 텍스트를 추출합니다. 텍스트 추출은 easyocr 라이브러리를 사용하였습니다. ocr 라이브러리로 tesseract ocr이 유명하지만 한글 인식률이 낮아서 easyocr를 사용했습니다.
결론
opencv를 사용해서 pdf를 해석했다. 문제를 해결하기 위해 라이브러리를 가리지 않고 학습을 했고, 결국 해결하니 기분이 좋았다.