요구사항: pdf 설계 도면에 박스를 칠 수 있는 프로그램을 만들고,
박스영역 내부에 있는 표의 내용을 그대로 추출해 엑셀로 만들어라

문제점: 관련 라이브러리가 없거나 쓸 수 없는 수준임


일단 오픈소스 라이브러리의 머신러닝 기능으로 도표 각 셀의 크기와 좌표를 추출하기로 함
문자까지 머신러닝으로 추출하면 작업에 일관성이 있어 좋겠으나, 시간이 너무 오래 걸려서 문자열 정보는 라이브러리 기능으로 간편히 추출하기로 타협함

머신러닝으로 추출한 셀의 크기는 매우 비정형적이며 순서가 보장되지 않아서 정렬문제로 꽤 골머리를 앓았음. 병합된 셀도 같이 추출되는 경우가 부지기수라 어떤 데이터 형식으로 보관해야 할지 고민을 많이 했는데 이에 적합한 자료구조가 있을지 탐색하고 있음.


현재는 2차원 배열 형태로 보관하는 것으로 타협함.
이부분은 y축 좌표가 오차범위 이내인 셀 정보 들을 모아서 하나의 열로 간주한 뒤
각 열을 분할정복하여 정렬해 주는 것으로 구현.
정렬된 데이터들의 xywh 정보를 구조체로 넣어줌.

외부 라이브러리 호출시 성능상 병목지점을 잡기 위해 병렬처리 적용. 계산 단위가 커질수록 확실히 성능개선 효과가 좋았음.

추출 데이터를 페이지별로 정렬한 포맷으로 엑셀에 표시해 달라는 요청이 있어 각 이차원배열을 페이지 단위로 병합하여 리스트에 넣어 최종결과를 산출함.

단위테스트 결과는 양질의 데이터가 들어왔다는 전제 하에서 잘 작동하고 있다.

머신러닝 자체의 부정확한 정보는 컨트롤에 한계가 있기 때문에
병합셀의 표현을 어떻게 해야할지를 목표로 삼고 있음.

결과물이 완성되면 소스코드 정리작업이 필요해 보이는데,
인프라 스트럭처에 해당하는 계층은 모두 분리시킬 수 있어 보임