web-dev-qa-db-ja.com

研究論文のPDFから情報を抽出する

PDFドキュメントから書誌メタデータを抽出し、人々が手で入力したり、カットアンドペーストしたりできるようにするためのメカニズムが必要です。

少なくとも、タイトルと要約。著者とその所属のリストはよいでしょう。参照を抽出することは素晴らしいでしょう。

理想的には、これはオープンソースのソリューションになるでしょう。

問題は、すべてのPDFがテキストをエンコードするわけではなく、テキストの論理的な順序を維持できないPDFが多いため、pdf2textを実行するだけで、列1の行1、列2の行1、列1の行2などが得られます。

ライブラリがたくさんあることは知っています。それは私が解決する必要があるドキュメントの要約、タイトルの著者などを特定しています。これが毎回可能になることは決してありませんが、80%は人間の労力を大幅に節約します。

2010年2月にロンドンで開催されたDev8Dでこの問題を解決するコンテストを開催し、その結果、素敵なGPLツールが作成されました。まだシステムに統合していませんが、世界にはあります。

https://code.google.com/p/pdfssa4met/

投稿ごとに1つのリンクしか許可されないので、これは次のようになります。 pdfinfo Linuxマニュアルページ

これは、タイトルと著者を取得する可能性があります。マニュアルページの一番下を見ると、プログラムのオープンソースが見つかるwww.foolabs.com/xpdfへのリンクと、さまざまなプラットフォームのバイナリがあります。

書誌参照を引き出すには、 cb2bib を見てください:

cb2Bibは、メールアラート、ジャーナルWebページ、およびPDFファイルから、フォーマットされていない、または標準化されていない書誌参照を迅速に抽出するための無料のオープンソースマルチプラットフォームアプリケーションです。

また、このトピックについて話し合ったwww.zotero.orgのディスカッションフォーラムも確認してください。

11
MZB

少し単純化しているかもしれませんが、グーグルの「bibtex + paper title」を使用すると、ACM、Citeseer、または他のそのような参照追跡サイトからフォーマット済みのbibtexエントリが得られます。もちろん、これは論文が非コンピューティングジャーナルからのものではないと想定しています:D

-編集-

このためのカスタムソリューションを見つけることができないと思います。citeseer、ACM、google scholarなどの引用トラッカーに書いて、彼らが行ったことのアイデアを得ることができます。他にもたくさんありますが、それらの実装はクローズドソースではなく、公開された形式ではない場合があります。このテーマに関するたくさんの研究資料があります。

私が所属する研究チームはそのような問題を調査し、手書きの抽出アルゴリズムまたは機械学習がその方法であるという結論に達しました。手書きのアルゴリズムがおそらく最善の策です。

可能な変動の量のため、これは非常に難しい問題です。 PDFをテキストに正規化することをお勧めします(これは、多数のプログラマティックPDFライブラリのいずれかから取得できます)。次に、カスタムテキストスクラップアルゴリズムを実装する必要があります。

PDFの終わりから逆方向に開始して、どのような種類の引用キーが存在するかを調べます-たとえば、[1]、[author-year]、(author-year)、そして次の文を解析します。おそらく、ライブラリから取得したテキストを正規化するためにコードを書く必要があります(余分な空白などを削除します)。行の最初の単語として引用キーを探すだけで、10ページあたり文書-最初のWordにはキー区切り文字が必要です(例: '['または '(')。10ページにキーが見つからない場合、PDFを無視して、人間の介入のためにフラグを立てます。

引用内のメタデータをフォーマットするためにプログラムでさらに相談できるライブラリが必要になる場合があります。たとえば、イタリック体には特別な意味があります。

私はあなたがかなりの時間を費やして実用的なソリューションを手に入れ、それから継続的にチューニングと廃棄アルゴリズム/エンジンに追加するプロセスを費やすことになると思います。

5
Hassan Syed

この場合、私は [〜#〜] tet [〜#〜][〜#〜] pdflib [〜#〜] をお勧めします

あなたがそれが何ができるかについて手短に感じる必要があるなら、 TETクックブック を見てください。

これはオープンソースのソリューションではありませんが、私の意見では現在のところ最良の選択肢です。これはプラットフォームに依存せず、豊富な言語バインディングと商用の裏付けがあります。

誰かが私に同等以上のオープンソースの代替案を教えてくれれば幸いです。

テキストを抽出するにはTET_xxx()関数を使用し、メタデータをクエリするにはpcos_xxx()関数を使用できます。

また、commanlineツールを使用して、必要なすべての情報を含むXMLファイルを生成することもできます。

tet --tetml Word file.pdf

[〜#〜] xslt [〜#〜] でTETMLを処理する方法の例が TETクックブック にあります

TETMLには何が含まれていますか?

TETML出力はUTF-8(USSまたはMVSを使用するzSeriesではEBCDIC-UTF-8、www.unicode.org/reports/tr16を参照)でエンコードされ、次の情報が含まれます:一般的なドキュメント情報と各ページのメタデータテキストコンテンツ(単語または段落)グリフ情報(フォント名、サイズ、座標)構造情報、たとえばPDFの処理中に例外が発生した場合のページリソース情報、つまりフォント、カラースペース、および画像のエラーメッセージに関する配置された画像に関する表の情報

3
Peter Lindqvist

この研究論文をご覧ください- 条件付き確率場を使用した研究論文からの正確な情報抽出

Stanford NER のようなオープンソースパッケージを使用して、CRFを開始したい場合があります。

あるいは、それらを Mendeley にインポートしてみることもできます。どうやら、それはあなたのために必要な情報を抽出する必要があります。

お役に立てれば。

1
Susheel Javadi

gscholarpdftotext の組み合わせをお勧めします。

PDFはメタデータを提供しますが、正しいコンテンツが入力されることはめったにありません。たとえば、「None」や「Adobe-Photoshop」、または他のダム文字列がタイトルフィールドの代わりになることがよくあります。それが理由です。タイトルがドキュメントのどこかにある可能性があるため、上記のどのツールもPDFから正しい情報を導き出せない可能性があります。別の例:会議の議事録の多くには、会議のタイトルや、自動抽出ツールを混乱させる編集者の名前も含まれている場合があります。あなたが論文の本当の著者に興味があるとき、その結果はまったく間違っています。

だから私はグーグル学者を含む半自動アプローチを提案します。

  1. PDFをテキストにレンダリングして、作成者とタイトルを抽出できるようにします。
  2. 2番目のコピーで、この情報の一部を貼り付けて、Google学者に問い合わせます。これを自動化するために、クールなpythonスクリプトgscholar.pyを使用します。

だから実際の生活ではこれが私がすることです:

me@box> pdftotext 10.1.1.90.711.pdf - | head
Computational Geometry 23 (2002) 183–194
www.elsevier.com/locate/comgeo

Voronoi diagrams on the sphere ✩
Hyeon-Suk Na a , Chung-Nim Lee a , Otfried Cheong b,∗
a Department of Mathematics, Pohang University of Science and Technology, South Korea
b Institute of Information and Computing Sciences, Utrecht University, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands

Received 28 June 2001; received in revised form 6 September 2001; accepted 12 February 2002
Communicated by J.-R. Sack
me@box> gscholar.py "Voronoi diagrams on the sphere Hyeon-Suk" 
@article{na2002voronoi,
  title={Voronoi diagrams on the sphere},
  author={Na, Hyeon-Suk and Lee, Chung-Nim and Cheong, Otfried},
  journal={Computational Geometry},
  volume={23},
  number={2},
  pages={183--194},
  year={2002},
  publisher={Elsevier}
}

編集:注意してください、キャプチャが発生する可能性があります。別の素晴らしいスクリプトは bibfetch です。

1
math

iText を見てください。これは、PDFを読み取るためのJavaライブラリです。適切なデータを見つけるという問題に直面することになりますが、ライブラリは、目的を推測するために使用できるフォーマットおよびレイアウト情報を提供します。

1
Jim Rush

見つかったばかり pdftk ...すばらしい、Win/Lin/Macのバイナリディストリビューションとソースがあります。

実際、私は他の問題を解決しました(私のプロフィールを見て、別のpdfの質問に回答したところ、1つのリンクの制限のためにリンクできません)。

PDFメタデータの抽出を行うことができます。たとえば、これはタイトルを含む行を返します。

 pdftk test.pdf dump_data output test.txt | grep -A 1 "InfoKey: Title" | grep "InfoValue"

タイトル、作者、更新日、さらにはブックマークとページ番号(テストpdfにはブックマークがありました)をダンプすることができます...出力を適切にgrepするために明らかに少し作業が必要になりますが、これはあなたのニーズに合うはずです。

PDFにメタデータがない場合(つまり、「抽象」メタデータがない場合)、pdf2textなどの別のツールを使用してテキストをカタログ化し、上記のようないくつかのgrepトリックを使用できます。 PDFがOCRされていない場合は、はるかに大きな問題が発生し、PDFのアドホッククエリは非常に遅くなります(OCRに最適)。

いずれにしても、各クエリでファイルのメタデータ/テキストをスキャンするのではなく、ドキュメントのインデックスを作成することをお勧めします。

1
r00fus

別のJava試してみるライブラリは PDFBox です。PDFは実際に表示および印刷されるように設計されているため、ライブラリにかなりの負担がかかることを間違いなく望んでいます。それでも、抽出したいデータを取得するために、テキストの断片を少し接着する必要があるかもしれません。

1
CBFraser

これが私がlinuxと cb2bib を使って行うことです。

  1. Cb2bibを開き、クリップボード接続がオンであること、および参照データベースがロードされていることを確認します
  2. Google Scholarで論文を探す
  3. 紙の下にある「bibtexにインポート」をクリックします
  4. 次のページのすべてを選択(ハイライト)(つまり、bibtexコード)
  5. これで、cb2bibでフォーマットされて表示されるはずです。
  6. オプションで、ネットワーク検索(地球のアイコン)を押して、追加情報を追加します。
  7. Cb2bibの[保存]を押して、紙をrefデータベースに追加します。

すべての論文に対してこれを繰り返します。 PDFからメタデータを確実に抽出する方法がない場合、これが私が見つけた最も簡単なソリューションだと思います。

1
Niels Janssen

PyPDF が役立つかもしれません。 PDFファイル(暗号化されていない))のコンテンツを読み書きするための広範なAPIを提供し、簡単な言語のPythonで記述されています。

0
Shailesh Kumar

citeyoulike を試してください。論文のライブラリをまとめたり、タグをつけたり、検索したり、コメントをつけたりできるサイトです。また、Webブラウザーにボタンを追加することもできます。これにより、要約を含む必要な情報が自動的に抽出されます。ただし、PDFからはあまり効果がありません。ただし、IEEE Explorer、citeseer、または多くのジャーナルサイトに関する論文の引用をポイントすると、通常はすべてのビブテックス情報を取得できます。

問題は、PDFには最初からすべての引用情報が含まれていないことが多いということです。通常、タイトルと著者がいますが、必ずしも会議の名前や出版年である必要はありません。まず、siteser、PubMed、またはその他の場所で論文の引用を見つけ、そこから情報を抽出することは理にかなっています。

一般的に、論文の整理にciteyoulikeが非常に役立つことがわかりました。他の人とのコラボレーションにも役立ちます。グループの作成、論文の共有、フォーラムの設定などができます。

0
Dima
0