2012-04-25 4 views
5

PDF 파일을 구문 분석하고 색인 생성을 위해 텍스트를 추출하는 시스템이 있습니다. 우리가 가진 한 가지 문제점은 Illustrator가 fi (단일 문자 모양)에 합자를 사용하기 위해 "fi"가 포함 된 단어를 설정한다는 것입니다. 예를 들어이 라인자바 (및 기타)에서 "FI"의 합자를 결정하는 방법

...

"벤치와 풍부한 유리화 세라믹."

내 자바 디버거

이처럼 표시 "죽어 야지 벤치와 \ vitri 풍부한 u001Fed 세라믹."

\ u001F는 Adobe PDF 파일이 합자 "fi"용으로 사용하는 문자 코드입니다. 나는 분명히 "fi"에 대한 \ u001F의 출현을 교환 할 수 있지만 아무도이 사건을 다루는 견고한 방법을 알고 있나?

+0

ick. 그들은 유니 코드 제어 문자를 사용하고 있습니까? –

+0

많은 합자가 없습니다. ff, fl, ffl, fi, ffi가 주요 어휘입니다 (적어도 영어는 지원하지 않습니다). –

+0

Adobe에는 많은 문자 집합 인코딩이 있습니다. 따라서 PDF 라이브러리에 따라 다릅니다. 예를 들어 글을 쓸 때 글꼴과 CP1252와 같은 인코딩을 선택합니다. 귀하의 경우 현재 유일한 해결책은 http://superuser.com/questions/220363/cleaning-up-pdftotext-font-issues에서 찾을 수 있습니다. –

답변

4

PDF (TJ, Tj 등)의 '텍스트 표시'연산자의 피연산자로 사용되는 바이트 시퀀스는 그래픽 상태의 활성 글꼴 인코딩과 글꼴과 관련된 ToUnicode cmap을 사용하여 텍스트로 변환되어야합니다 . 일부 글꼴에는 0x001F 코드 (또는 글리프에 사용 된 코드)를 문자 'f'와 'l'에 매핑하는 ToUnicode cmap이 포함되어 있습니다. 다른 글꼴은 코드 0x1F를 문자/fl에 매핑하는/Differences 배열과 함께 인코딩을 사용합니다. 올바른 결과를 얻으려면 이러한 구조를 처리해야합니다.