한글파일 변환안정성속도 개선

시험지 한 장을 문항 단위로 정확하게 나누는 일

기다리게 하지 않고, 엉뚱하게 자르지도 않기

PlanA Labs 개발팀··5분 읽기

시험지를 올리면 문항별로 잘라 한글파일로 돌려드리는 기능입니다. 한 문장으로 설명되는 일이지만, 실제로는 여기가 저희가 가장 오래 붙들고 있던 부분입니다. 올려주신 파일에서 글자와 그림을 읽어내는 것보다, "여기서부터 여기까지가 3번 문항"을 가려내는 쪽이 훨씬 까다로웠습니다.

한 장에 섞여 있던 문항을 번호마다 잘라, 딸린 지문과 그림까지 함께 묶습니다.시험지 한 장을 문항 단위로 나눕니다. 한 페이지에 섞여 있던 문항들을 번호마다 잘라, 문항 번호와 지문, 그림, 보기를 한 묶음으로 묶어 따로 보관합니다.시험지 한 장1234문항 단위로 보관1번2번3번4번함께 묶이는 것문항 번호딸린 지문그림·표보기 ①~⑤그래서 나중에 문항 하나만골라 쓸 수 있습니다.
한 장에 섞여 있던 문항을 번호마다 잘라, 딸린 지문과 그림까지 함께 묶습니다.

기다리다 끝나는 일이 없도록

문항 경계를 판단하는 데는 AI를 씁니다. 이 부분이 원래 느렸고, 가끔은 답을 아예 주지 않았습니다. 한 번 응답이 막히면 그동안 화면에는 아무것도 나오지 않았습니다.

처음에는 실패하면 다시 요청하는 방식으로 막아봤습니다. 그런데 첫 요청이 완전히 끝날 때까지 기다렸다가 다시 보내다 보니, 운이 나쁜 경우 기다리는 시간이 두 배가 됐습니다.

기다린 끝에 실패하면 그동안 쓴 시간이 그대로 사라진다는 점도 문제였습니다. 화면 앞에 계신 분에게는 아무 일도 일어나지 않은 것과 같습니다.

그래서 순서를 바꿨습니다. 지금은 한쪽이 정해진 시간 안에 답을 주지 않으면 다른 경로가 알아서 출발합니다. 여러 곳 중 제대로 된 답을 먼저 들고 오는 쪽의 결과를 쓰고 나머지는 버립니다. 가장 뒤에는 느려도 답은 주는 G사의 G모델을 세워 뒀습니다. 덕분에 화면 앞에서 하염없이 기다리는 경우가 크게 줄었습니다.

매번 조금씩 다르게 잘리던 문제

속도만큼 신경 쓴 것은 정확도입니다. 한동안은 AI에게 문항의 위치를 좌표로 직접 답하게 했습니다. 그랬더니 같은 시험지를 두 번 올려도 잘리는 자리가 조금씩 달랐습니다.

방식을 바꿨습니다. 글자를 읽어내는 단계에서 이미 시험지의 모든 조각에 순번이 매겨져 있습니다. 그래서 AI에게는 좌표 대신 "몇 번 조각부터 몇 번 조각까지가 한 문항인지"만 묻고, 실제 영역 계산은 저희 쪽에서 합니다. 판단할 것이 단순해지자 결과가 눈에 띄게 안정됐고, 같은 파일을 다시 올려도 같은 결과가 나옵니다.

가장자리도 다듬었습니다. 앞뒤 문항의 영역이 살짝 겹치면 옆 문항의 그림이 따라 들어오던 것을 정리했고, 양쪽 단을 넘나드는 큰 문항은 그림 단위로 나눠 처리하도록 했습니다.

이런 부분은 판단이 더 좋아진다고 저절로 풀리지 않습니다. 실제로 어긋난 사례를 하나씩 보면서 규칙을 손으로 다듬는 수밖에 없었고, 지금도 그렇게 하고 있습니다.

앞으로

문항을 나누는 이 방식은 시험지뿐 아니라 일반 문서에도 그대로 쓰고 있습니다. 아직은 표가 많거나 편집이 독특한 시험지에서 손이 가는 경우가 남아 있어서, 그런 사례를 모아 하나씩 보완하고 있습니다. 올려두고 다른 일을 하셔도 되는 수준까지 가는 것이 목표입니다.

기술 이야기 전체보기 →

PlanA Labs

시험지 한 장이 편집 가능한 한글파일이 되기까지

기출문제 은행, 문서 한글화, 유사문항 추천, 변형문제 생성까지. PDF·이미지를 올리면 HWPX로 바로 내려받습니다.

가입하고 기출 500문항 무료로 받기 →