렌더링 시점에 PDF 파싱을 멈추십시오

대부분의 프론트엔드 PDF 추출 도구는 실패합니다.

개발자들은 시각적 출력물을 통해 문서 구조를 추측하려고 합니다. 렌더링된 픽셀을 보고 열, 표 또는 목록을 찾습니다. 컴퓨터 비전이나 픽셀 근접성을 사용하여 박스가 어디서 시작되는지 결정합니다.

이것은 잘못된 구축 방식입니다.

PDF는 이미 오퍼레이터 스트림(operator stream)에 명시적인 구조 데이터를 포함하고 있습니다. 표는 단순히 인접한 픽셀들의 집합이 아닙니다. moveTo, lineTo, 또는 rectangle과 같은 특정 명령어로 그려집니다. 여러분이 찾고자 하는 경계는 이미 소스에 인코딩되어 있습니다.

만약 추출기가 100% 확대 시와 150% 확대 시에 서로 다른 열을 제공한다면, 여러분은 구조를 추출하고 있는 것이 아닙니다. 시각적 아티팩트(visual artifacts)를 패턴 매칭하고 있는 것입니다.

시각적 휴리스틱(visual heuristics) 사용을 멈추십시오. 오퍼레이터 스트림을 파싱하기 시작하십시오.

오퍼레이터 스트림이 더 나은 이유:

어려운 길이 옳은 길입니다.

CTM 스택을 이해해야 합니다. 행렬 상태(matrix states)를 추적하고 서브패스(subpaths)를 분류해야 합니다. 이를 마스터하려면 PDF 사양과 소스 코드를 읽어야 합니다.

초기에는 더 많은 노력이 필요합니다. 하지만 사용자가 업로드하는 모든 PDF에서 작동합니다. 픽셀 기반 도구는 테스트 스위트에 있는 몇 안 되는 파일에서만 작동할 뿐입니다.

데모가 아닌 진짜 추출기를 만드십시오.

출처: https://dev.to/bonzai2carn/stop-parsing-pdfs-at-render-time-a-better-architecture-for-structured-extraction-5fb8