2009-11-04 3 views
5

현재 pyPdf와 함께 pdf 페이지의 페이지 객체를 만들고 extractText()를 작성하면 행이 함께 연결됩니다. 예를 들어, 페이지의 1 행에 "hello"가 있고 2 행에 "world"라고 표시되면 extractText()에서 반환 된 결과 텍스트는 "hello world"대신 "helloworld"입니다. 누구든지이 문제를 해결하거나 해결 방법을 알고 있습니까? 필자는이 텍스트에서 텍스트 마이닝을하고 라인 사이에 공백을 두지 않기 때문에 텍스트 사이에 공백이 있어야합니다. ...python 및 pyPdf - 페이지 사이에 공백이 있도록 페이지에서 텍스트를 추출하는 방법

+1

이 SO 페이지를보고 싶을 수도 있습니다. http://stackoverflow.com/questions/25665/python-module-for-converting-pdf-to-text 거기에 몇 가지 좋은 제안이 있습니다! – avelldiroll

답변

2

이것은 PDF 파싱의 일반적인 문제입니다. 어떤 경우에는 수정해야 할 대시가 나타날 수도 있습니다. 나는 곧 여기에서 설명 할 프로젝트 중 하나에 대한 해결책을 생각해 냈다 :

나는 pdfminer을 사용하여 PDF에서 XML을 추출했으며 XML에서 연결 단어를 발견했다. 나는 HTML과 같은 PDF를 추출하고, HTML은 다음 정규식의 라인에 의해 설명 될 수 있습니다 :

<span style="position:absolute; writing-mode:lr-tb; left:[0-9]+px; top:([0-9]+)px; font-size:[0-9]+px;">([^<]*)</span> 

스팬은 절대적으로 배치하고 줄 바꿈이 발생하는지 확인하는 데 사용할 수있는 최고의 스타일을 가지고 있습니다. 줄 바꿈이 있었고 마지막 줄의 마지막 단어에 대시가 없으면 마지막 줄의 마지막 단어와 현재 줄의 첫 단어를 구분할 수 있습니다. 세부 사항은 까다로울 수 있지만 거의 모든 텍스트 구문 분석 오류를 수정할 수 있습니다.

또한 텍스트 위에 enchant과 같은 사전 라이브러리를 실행하고 오류를 찾고 사전에 제안 된 수정 프로그램이 오류 단어와 같지만 어딘가에 공백이 있으면 오류 단어가 구문 분석 오류 일 수 있습니다 사전 제안으로 해결할 수 있습니다.

PDF를 파싱하면 더 좋은 소스를 찾을 수 있습니다.

관련 문제