Pdftotext는 단락 나누기를 수행하지 않습니다.

Pdftotext는 단락 나누기를 수행하지 않습니다.

OSX, Homebrew는 pdftotext작동하지만 단락 구분을 존중하지 않습니다. -pagebrk, , -eol mac를 시도해 보았지만 -eol unix단락 나누기 문제가 항상 지속되는 것 같습니다. 이것이 전형적인 문제인가요?

답변1

PDF는 텍스트가 반드시 합리적인 순서로 되어 있지 않은 이상한 것입니다.

pdftotext -layout옵션을 사용해보십시오.

PDF에 따라 완벽하게 읽을 수 있는 다중 열 텍스트 파일이 제공될 수 있지만(특히 80열이 넘는 와이드스크린 모니터의 경우) 단일 열 텍스트가 더 유용할 수 있습니다.

--

여러 텍스트 열을 단일 열로 변환하는 가장 쉬운 방법은 vim을 사용하여 텍스트를 편집하고 열 사이에 TAB을 삽입한 다음 perl 스크립트를 작성하여 열을 각 페이지의 한 열로 병합하는 것입니다(페이지는 양식 피드로 구분됨, ^L). 이는 시간이 많이 걸리고 지루할 수 있습니다.

이 작업을 수행하기 위해 Perl 스크립트를 작성하려는 첫 번째 시도는 열 사이의 공백 문자 수로 열을 식별하려고 시도했지만 불행하게도 이것은 1~2개의 공백 문자에서 5개 이상으로 늘어났습니다(또한 일부 열에는 다음과 같은 사실이 있습니다). 추가 공백이 있으므로 단어 사이의 일반 공백과 열 사이의 공백을 자동으로 구별할 수 있는 방법이 없습니다. pdftotext출력의 테이블을 전혀 처리할 수 없습니다 .

TAB 문자를 수동으로 편집하고 삽입하고 열을 분할하는 것이 훨씬 쉽습니다. vi/vim을 사용하면 이러한 반복적인 편집 작업이 매우 쉬워집니다. TAB을 삽입할 편리한 커서 위치를 찾고, 키를 누르고 Ctrl-V커서를 페이지나 섹션의 아래쪽으로 이동하세요. 편집 중이고 키를 누르면 rTAB선택한 vim 열이 탭으로 대체됩니다.


마지막으로 귀하의 의견에서 출력 텍스트에 유니코드 문자 "오른쪽 작은따옴표"(U+2019)가 표시된다고 언급하셨습니다. 이것은 완전히 정상적인 현상입니다. 많은(대부분?) PDF에는 ASCII 문자로 제한되지 않으므로 유니코드 문자(스마트 따옴표, 대시, 타원 등)가 포함되어 있습니다.

답변2

저는 몇 가지 유용한 작업을 수행하는 간단한 한 줄짜리 코드를 만들었습니다. 하지만 PDF는 이상하고 항상 작동하지 않는다는 점을 명심하세요.

sed 's/\.$/.\n/; s/• /\n/; /^[0-9]/ s/$/\n/' | perl -00 -pe 's/\n(?!\Z)/ /g'
  • 문장에 마침표가 있으면 sed 명령은 새 줄을 추가합니다. 왜냐하면 이것이 단락의 끝일 수 있기 때문입니다. (이 가정은 여러 번 실패했습니다.)
  • 항목별 목록이 나타나면 새 줄을 추가하세요.
  • 줄이 숫자로 시작하는 경우 헤더일 가능성이 높습니다. 새 줄을 추가하세요.

이제 줄 바꿈으로 구분된 줄 집합이 있는 한 이는 아마도 하나의 단락일 것입니다. perl 명령은 이러한 그룹을 한 줄에 배치합니다. 이 Perl 코드 줄에 대한 설명은 다음과 같습니다.

https://unix.stackexchange.com/a/479229/245582

알아채다. 나는 데비안의 pdftotext 를 사용합니다 popper-utils.

관련 정보