2011-10-31 5 views
11

내 PDF 파일에서 텍스트를 추출하려고하면 임의의 단어 사이에 공백이 삽입 된 것처럼 보입니다.PDFBox에서 단어 내에 공백 추가

나는이 페이지의 다운로드 섹션에서 샘플 파일을 다음에 pdfbox-앱 1.6.0.jar (최신 버전)을 사용하고 있습니다 : http://www.sheffield.gov.uk/roads/children/parents/6-11/pedestrian-training

나는 다른 여러 PDF 파일을 시도하고이 보인다 여러 페이지에서 동일한 작업을 수행해야합니다.

I 다음을 수행하십시오

자바 -jar pdfbox-앱 1.6.0.jar ExtractText -force -console ~/데스크탑/PED 교육 pdf.pdf

다운로드 한 파일에

당신 것 콘솔의 결과에 잘못 삽입 된 다음에 공백을 참조하십시오 ". 채널 ildren가 schoo에 (L)에 걸을 수있는 경우 • 안전이이 혼잡을 줄일 수있다"

을 "• 나중에 인생에 대한 좋은 HAB의 개발."

은 "www.sheff ield.gov.uk"

는 "앞서 생각! 어 무형 문화 유산을 기반으로"

등 등

당신이 단어를 위 한 여러 가지를 볼 수 있듯이 아무 이유없이 그들 사이에 공백이있을 수 있습니다.

나는 우분투에 있고 Sun의 JDK 1.6을 사용하고 있습니다.

여러 PDF 파일에서이 문제를 해결하고 포럼에서 솔루션을 검색해 보았습니다. 비슷한 버그가 있지만 모두 해결 된 것으로 보입니다.

도움이 필요하거나 다른 사람에게 동일한 문제가있는 경우 의견을 말하십시오. 이것은 검색을 위해 내용을 올바르게 색인화하는 데 큰 문제를 일으 킵니다.

답변

11

불행히도 현재로서는 쉬운 해결책이 없습니다.

내부적으로 PDF 문서에는 "X 위치에 abc '문자 배치"및 "Y 위치에 문자 배치"와 같은 명령어가 포함되어 있으며 PDFBox는 추출 된 텍스트가 "abc def"인지 아니면 "abcdef"는 X와 Y 사이의 거리와 같은 것을 기반으로합니다. 일반적으로 이러한 경험적 방법은 매우 정확하지만, 사용자가 볼 수 있듯이 항상 정확한 결과를 산출하지는 못합니다.

추출 된 텍스트의 품질을 향상시키는 한 가지 방법은 추출 된 각 단어 또는 토큰에 대한 사전 조회를 시도하는 것입니다. 조회가 실패하면 토큰을 다음 토큰과 결합 해보십시오. 결합 된 토큰에 대한 사전 검색이 성공하면 텍스트 추출기가 실수로 단어 안에 추가 공간을 추가했을 가능성이 큽니다. 불행히도 이러한 기능은 PDFBox에 아직 존재하지 않습니다. 이에 대한 기능 요청은 https://issues.apache.org/jira/browse/PDFBOX-1153을 참조하십시오. 패치 환영!

+1

감사합니다. 때로는 문제가 예상되는대로 작동하지 않는 이유와 문제를 일으키는 이유가 무엇인지 이해하는 데 도움이되는 경우도 있습니다. –

+0

다음은 Lucene을 사용하는 경우 이러한 용어 사전을 작성하는 방법의 예입니다. [Lucene에서 문서 용어 벡터를 추출하는 방법] (http://stackoverflow.com/a/8901758/165085) –

5

클래스 org.apache.pdfbox.util.PDFTextStripper (pdfbox-1.7.1)은 두 문자열이 같은 단어의 일부인지 아닌지 결정하는 경향을 수정할 수있게합니다.

spacingTolerance을 늘리면 삽입되는 공백 수가 줄어 듭니다.