40

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

せめてタイトルとアブストラクト。著者とその所属のリストは良いでしょう。参照を抽出することは驚くべきことです。

理想的には、これはオープン ソース ソリューションです。

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

たくさんのライブラリがあることを知っています。私が解決する必要があるのは、ドキュメントの要約、タイトルの作成者などを特定することです。毎回これが可能になるわけではありませんが、80% あれば多くの人的労力を節約できます。

4

12 に答える 12

8

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

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

于 2010-08-19T15:31:44.653 に答える
5

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

- 編集 -

このための独自の解決策は見つからないと思います。citeseer、ACM、Google Scholar などの引用トラッカーに手紙を書いて、彼らが何をしたかについてのアイデアを得たいと思うかもしれません。他にもたくさんの実装があり、それらの実装はクローズド ソースではなく、公開された形式ではないことに気付くかもしれません。このテーマに関する研究資料は山ほどあります。

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

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

PDF の末尾からさかのぼって、どのような種類の引用キーが存在するかを調べます ([1]、[著者年]、(著者年) など)。その後、次の文を解析しようとします。おそらく、ライブラリから取得したテキストを正規化するコードを作成する必要があります (余分な空白などを削除します)。行の最初の単語としてのみ引用キーを探し、ドキュメントごとに 10 ページのみを検索します-最初の単語にはキー区切り文字が必要です-たとえば、「[」または「(」。キーが見つからない場合次に、10 ページが PDF を無視し、人間が介入するようにフラグを立てます。

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

実用的な解決策を得るためにかなりの時間を費やすことになり、その後、スクラップ アルゴリズム/エンジンを調整および追加する継続的なプロセスが発生する可能性があると思います。

于 2009-11-28T19:39:35.457 に答える
4

この場合、PDFLIB のTETをお勧めします

何ができるかを手短に知りたい場合は、TET クックブックをご覧ください。

これはオープン ソース ソリューションではありませんが、現時点では最良の選択肢だと思います。プラットフォームに依存せず、言語バインディングの豊富なセットと商業的な裏付けがあります。

誰かが同等またはより優れたオープンソースの代替案を教えてくれたら幸いです。

関数を使用してテキストを抽出し、TET_xxx()関数を使用してメタデータを照会しますpcos_xxx()

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

tet --tetml word file.pdf

TET クックブックにXSLTでTETML を処理する方法の例があります。

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

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

于 2009-11-28T19:36:26.183 に答える
2

ちょうどpdftkを見つけました... すごいですね。ソースだけでなく Win/Lin/Mac 用のバイナリ ディストリビューションも付属しています。

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

たとえば、これはタイトルを含む行を返します。

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

タイトル、作成者、変更日、さらにはブックマークとページ番号 (テスト pdf にはブックマークがありました) をダンプできます。

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

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

于 2009-12-08T02:10:25.573 に答える
2

試してみる別の Java ライブラリはPDFBoxです。PDF は実際には表示および印刷するように設計されているため、ライブラリに面倒な作業の一部を任せたいと思うことは間違いありません。それでも、抽出したいデータを取得するには、テキストの断片を少し接着し直す必要がある場合があります。幸運を!

于 2009-11-28T19:20:14.233 に答える
1

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

于 2009-11-28T19:14:54.007 に答える
1

linux とcb2bibを使用して行うことは次のとおりです。

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

すべての用紙についてこれを繰り返します。PDF からメタデータを確実に抽出する方法がない場合、これが私が見つけた最も簡単な解決策だと思います。

于 2013-05-21T17:17:46.143 に答える
1

この研究論文をご覧ください -条件付きランダムフィールドを使用した研究論文からの正確な情報抽出

CRF を開始するには、Stanford NERなどのオープンソース パッケージを使用することをお勧めします。

または、それら (研究論文) をMendeleyにインポートしてみてください。どうやら、必要な情報を抽出する必要があります。

お役に立てれば。

于 2010-04-21T10:10:11.047 に答える
1

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

于 2009-11-28T19:26:19.913 に答える