2017-09-28 5 views
0

私はラテックスで書かれた科学的研究論文のPDFを持っています。 各研究論文は、「はじめに 『関連作品としてセクションがある』などと、私は別に、各セクションの下にテキストを抽出したい。Pythonを使用して、ラテックスからエクスポートされたPDFのセクションからテキストを抽出します。

Sample Image of a PDF with sections such as "Abstract" and "Introduction"

このPDFは、セクションがある 『上の『抽象』と』はじめに「概要」のセクションでは、italictsのテキストを取得したいと思います。「紹介」については、そのセクションのすべての段落が必要です。

私はラテックスソースファイルを持っていればデータマイニングし、\ section {}キーワードに基づいてテキストを抽出しました

それゆえ、私はPython3でいくつかの方法を試してみましたが、pdfをlatex [link]に変換しましたが、提案されているソフトウェアは私のシステム(Ubuntu 16.04)と互換性がないか、有料ソフトウェアです。私はtextractを使ってみましたが、PDFからセクションを抽出するオプションはありません。

ラテックスを使って作られたPDFからセクションを抽出する方法を知っている人はいますか?

+1

arXivからlatexソースファイルをダウンロードしてからpandocで処理するほうが簡単かもしれません。 – dseuss

答えて

0

どのようにRを使ってこれを行うのか分かりませんが、すべてのPDFファイルをフォルダに入れてループして、それぞれのWord文書に変換すれば、簡単にVBAを使用して作業を行うことができます。

Sub SelectBetweenHeadings() 
    With Selection 
     .GoTo What:=wdGoToHeading, Which:=wdGoToPrevious 
     .Collapse 
     Dim curRange As Range 
     Set curRange = .Range 
     .Extend 
     .GoTo What:=wdGoToHeading, Which:=wdGoToNext 
     If .Range = curRange Then 
      .EndKey Unit:=wdStory 
     End If 
     .ExtendMode = False 
    End With 
End Sub 

さらに精度を上げるには、これを試してください。

Sub Macro1() 
    Selection.WholeStory 
    Selection.Collapse wdCollapseStart 

    Selection.Find.ClearFormatting 
    Selection.Find.Style = ActiveDocument.Styles("Caption 1") 
    With Selection.Find 
     .Text = "2.3.1" 
     .Forward = True 
     .Wrap = wdFindContinue 
     .Format = True 
     .MatchCase = False 
     .MatchWholeWord = True 
    End With 
    Selection.Find.Execute 
    Selection.Collapse wdCollapseStart 

    Dim r1 As Range 
    Set r1 = Selection.Range 

    ' keep format settings, only change text 
    Selection.Find.Text = "2.3.2" 
    If Selection.Find.Execute Then 
     Selection.Collapse wdCollapseStart 
    Else 
     Selection.WholeStory 
     Selection.Collapse wdCollapseEnd 
    End If 
    Dim r2 As Range 
    Set r2 = ActiveDocument.Range(r1.Start, Selection.Start) 
    r2.Select 

End Sub 
+0

私はRが分からないのではないかと思います。これをPythonでコーディングする必要があります:/ –

関連する問題