2015-01-02 4 views
3

몇 개의 하이퍼 링크가있는 PDF 문서를 가지고 있으며 pdf에서 모든 텍스트를 추출해야합니다. PDFMiner 라이브러리와 http://www.endlesslycurious.com/2012/06/13/scraping-pdf-with-python/의 코드를 사용하여 텍스트를 추출했습니다. 그러나 하이퍼 링크는 추출하지 않습니다.Python에서 PDF의 하이퍼 링크 추출

예를 들어, Check this link out이라는 텍스트가 링크가 첨부되어 있습니다. Check this link out이라는 단어를 추출 할 수는 있지만 실제로 필요한 것은 하이퍼 링크 자체가 아니라 단어입니다.

어떻게해야합니까? 이상적으로는 파이썬에서하는 것이 더 좋지만 다른 언어에서도 사용할 수 있습니다.

나는 itextsharp을 보았지만 사용하지는 않았다. Ubuntu을 실행 중입니다. 도움을 주시면 감사하겠습니다.

답변

0

하이퍼 링크는 실제로 주석이 될 것이므로 '텍스트 추출'보다는 주석을 처리해야합니다. 필자는 필자가 정말로 필사적 인 (그리고 PostScript에서 편안하게 프로그래밍 할 때) itextsharp, MuPDF 또는 Ghostscript와 같은 라이브러리를 사용해야 할 것으로 생각된다.

LNK 유형을 찾는 주석을 상대적으로 쉽게 처리 할 수 ​​있다고 생각했습니다.

+0

하이퍼 링크뿐만 아니라 텍스트도 필요했기 때문에 텍스트를 추출했습니다. 특수 효과를 처리하는 것이 무엇을 의미하는지 확신 할 수 없습니다 ... 설명해 주시겠습니까? 나는 아마추어의 비트. –

+0

주어진 페이지 (또는 윤곽선 트리)에있는 모든 주석을 찾아서 반환하는 라이브러리를 사용해야하며이를 설명하는 사전을 반환해야합니다. 여기에는 그릴 텍스트와 URL이 모두 포함되어야합니다. 미안하지만 사용할 라이브러리 나 사용 방법을 알려주지 못합니다.이 작업을 수행 할 라이브러리를 모르겠습니다. – KenS

3

저는 PyPDF를 사용하면 그렇게 할 수 있다고 생각합니다. PDF에서 링크를 추출하려면. 나는 이것을 어디에서 얻었는지 확실하지 않지만 그것은 다른 곳의 일부로서 나의 코드에있다. 희망이 도움이 :

PDFFile = open('File Location','rb') 

PDF = pyPdf.PdfFileReader(PDFFile) 
pages = PDF.getNumPages() 
key = '/Annots' 
uri = '/URI' 
ank = '/A' 

for page in range(pages): 

    pageSliced = PDF.getPage(page) 
    pageObject = pageSliced.getObject() 

    if pageObject.has_key(key): 
     ann = pageObject[key] 
     for a in ann: 
      u = a.getObject() 
      if u[ank].has_key(uri): 
      print u[ank][uri] 

이 나는 ​​당신의 PDF에있는 연결을 주어야 희망한다. P.S : 저는 이것을 광범위하게 시도하지 않았습니다.