2012-04-02 5 views
4

이것은 오래된 질문처럼 보일 수 있습니다. 그러나 30 분 정도의 시간을 들여서 검색 한 결과를 완전히 찾아 내지 못했습니다.PDF에서 문자열 위치가있는 모든 텍스트를 추출하십시오.

PDFBox를 사용하고 있으며 각 문자열의 좌표와 함께 PDF 파일의 모든 텍스트를 추출하고 싶습니다. 그들의 PrintTextLocations 예제 (http://pdfbox.apache.org/apidocs/org/apache/pdfbox/examples/util/PrintTextLocations.html)를 사용하고 있지만 pdf의 종류와 함께 (E-Tickets) 프로그램에서 문자열을 인식하지 못하고 각 문자를 따로 인쇄합니다. 출력은 다음과 같은 문자열 목록 (각각 TextPosition 개체를 나타내는)이다 : 나는 독특한 TextPosition로 문자열 "판매"를 인식하고 나에게 위치를 제공 할 수있는 프로그램을 원하는 반면

String[414.93896,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=4.0] s 
String[418.93896,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=4.447998] a 
String[423.38696,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=1.776001] l 
String[425.16296,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=4.447998] e 

. setSpacingTolerance()setAverageCharacterTolerance()PDFTextStripper 방법으로 다른 값을 표준 값 (각각 0.5와 0.3)으로 설정했지만 출력이 전혀 변경되지 않았습니다. 내가 어디로 잘못 가고 있니? 미리 감사드립니다.

+1

아, PDF의 즐거움. 무엇을 만들었 느냐에 따라»텍스트«는 특정 위치에서 글리프 모음 일 뿐이므로 단어와 공백이있는 위치를 파악하기 위해 위치를 기반으로 추측해야합니다. – Joey

답변

4

조이 (Joey)가 언급했듯이 PDF는 특정 문자가 인쇄되어야하는 위치를 알려주는 지침 모음입니다.

단어 나 줄을 추출하려면 일부 데이터 분할을 수행해야합니다. 문자의 경계 상자를 연구하면 동일한 줄에있는 단어를 인식하고 어떤 단어가 어떤 단어인지 인식 할 수 있습니다.

+1

답변 해 주셔서 감사합니다. 이것은 내가 끝내었던 것입니다 : 각 PDF "템플릿"에 대한 직사각형 세트를 생성하고 위치를 기반으로 텍스트의 일부를 추출하는 데 적용합니다. 이렇게하려면 많은 수작업을 유지해야하지만, 신뢰할 수있는 유일한 방법 인 것 같습니다. –

관련 문제