2017-11-14 14 views
0

Android에서 PDFBox를 사용하여 문서에서 텍스트를 추출하는 데 문제가 있습니다. 그러나 구문 분석기가 잘 작동하고있는 것으로 보입니다 (또는 적어도, 그 의미를 해석하는 것입니다.) "파싱 된 COSObject"로 검색하면 유감스럽게도 관련 결과가 표시되지 않습니다. (일부 문서의 경우 logcat이 스팸되고, 이 putput을 끄십시오)). getCharactersByArticle은이 문서에서 빈 출력을 반환합니다. vectorlistoftps가 비어 있습니다. 나는에 문서 업로드 한PDFBox 파서가 파싱 된 것으로 보이지만 텍스트 스트리퍼의 빈 출력

: 나는 시도 대부분의 다른 문서의 경우 https://ufile.io/cnvoq

은, 텍스트 추출은 잘 작동, 또는 나는이 일에 관련이없는 오류를 얻을. 하지만 여기에는 없습니다.

다음은 관련 코드 스 니펫입니다.

private void extractTextPosition() throws FileNotFoundException, IOException { 
    FileInputStream stream = new FileInputStream(var1); 
    PDFParser parser = new PDFParser(stream); 

    parser.parse(); 
    Log.d("Parser has ","parsed"); 
    StringWriter outString = new StringWriter(); 
    CustomPDFTextStripper stripper = new CustomPDFTextStripper(); 
    stripper.setStartPage(currentPage); 
    stripper.setEndPage(currentPage); 
    stripper.setSortByPosition(true); 

    try { 
     stripper.writeText(parser.getPDDocument(), outString); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
Vector<List<TextPosition>> vectorlistoftps = stripper.getCharactersByArticle(); 
} 

CustomPDFTextStripper는 PDFTextStripper (내가 그것을 변경했지만, 모든 변경 사항이 주석 한)과 동일합니다.

Here is the logcat output

어떤 도움

에 감사드립니다.

답변

0

해당 PDF에는 텍스트가 없습니다.

문자 모양을 볼 때 실제로는 문자 그리기 명령 (일부 인코딩에서는 문자열을 사용하고 일치하는 글리프는 그려짐)을 사용하여 그려지지 않지만 각 문자 글리프는 벡터 그래픽 작업 (이동, 줄, 곡선, 채우기 ...).

PDFBox PDFTextStripper에 의해 수행으로

텍스트 추출 (또한 복사 할 수 없습니다 &는 Adobe Reader에서 텍스트를 붙여, 당신은 단순히 복사조차 마르크이 있습니다. 표시 할 텍스트입니다 수 없기 때문) (또는 다른 PDF 라이브러리의 유사한 텍스트 추출 클래스)는 텍스트 드로잉 명령을 사용하여 그 문자열 인수를 디코딩함으로써 만 작동합니다.

귀하의 PDF에는 텍스트 검색을위한 OCR이 필요할 것입니다.

+0

고맙습니다. 필자는 원래 페이지를 몇 페이지로 나눠서 페이지의 텍스트를 이미지로 변환했다는 사실을 깨닫지 못했습니다. 나는 그러한 예측할 수없는 행동을 싫어한다. 더 나은 PDF 분할기가 필요할 수도 있습니다 ... –

+0

PDF 분할의 자연스러운 결과가 아니므로 작업을 수행해야합니다. 그래서 이것은 당신이 사용하는 스플리터의 특별한 "특징"이었던 것처럼 보입니다. 실제로 어떤 사람들은 다른 사람들이 자신의 pdf 텍스트를 쉽게 추출 할 수 없기 때문에 이러한 행동을 원합니다. – mkl