Node.jsでPDFからテキスト抽出(pdf-parse)

 ·  ☕ 2 

Node.jsで、「pdf-parse」を利用してPDFからテキストを抽出してみました。

※この方法だとファイルによっては文字化けする事がありました。汎用性を上げるならOCRの方がよいです。
PDFをOCRでテキスト変換してみた(Cloud Vision)

はじめに

Node.jsでPDFからtextを抽出したかったので、調べたところ「pdf-parse」というパッケージが見つかったので使ってみました。

PDF からテキストを抜き出す

インストール

1
$ npm install pdf-parse

Node.jsのコード

npm記載のコードのファイル名を変えるだけです。
https://www.npmjs.com/package/pdf-parse#basic-usage---local-files

const fs = require('fs');
const pdf = require('pdf-parse');

const pdf_filename = '000017316.pdf'

let dataBuffer = fs.readFileSync(pdf_filename);

pdf(dataBuffer).then(function (data) {

    // number of pages
    console.log(data.numpages);
    // number of rendered pages
    console.log(data.numrender);
    // PDF info
    console.log(data.info);
    // PDF metadata
    console.log(data.metadata);
    // PDF.js version
    // check https://mozilla.github.io/pdf.js/getting_started/
    console.log(data.version);
    // PDF text
    console.log(data.text);
});

出力例

115
115
{
  PDFFormatVersion: '1.5',
  IsAcroFormPresent: false,
  IsXFAPresent: false,
  Creator: 'Microsoft® Word 2013',
  Producer: 'Microsoft® Word 2013',
  CreationDate: "D:20160127112200+09'00'",
  ModDate: "D:20160127112200+09'00'"
}
null
1.10.100

~~ 中略 ~~

はじめに 
3 
本書の内容および位置付け 
本書は、脆弱性関連情報流通の基本枠組みである「情報セキュリティ早期警戒パートナーシップ」の
「受付・分析機関」であるIPAにおいて、実際に脆弱性と判断している問題を主に取り上げています。 
 
本書は3章で構成しています。 
第1章では、「ウェブアプリケーションのセキュリティ実装」として、SQLインジェクション、OSコマンド・
インジェクションやクロスサイト・スクリプティング等11種類の脆弱性を取り上げ、それぞれの脆弱性で発
生しうる脅威や特に注意が必要なウェブサイトの特徴等を解説し、脆弱性の原因そのものをなくす根本
的な解決策、攻撃による影響の低減を期待できる対策を示しています。 

※使用したPDFはこちらです。
IPA「安全なウェブサイトの作り方」
https://www.ipa.go.jp/security/vuln/websecurity.html

備考

先日、 Pythonでも同様の事 を行っています。
こちらのNode.jsのパッケージの方が使用感が良かったです。
動作が早く、PDFの文書情報(出力例の上の部分)も簡単に抜き出せました。
※抽出結果の詳細な比較はできていませんが。
多数のPDFを処理したいのもあり、こちらのパッケージを使っていく予定です。
(元々勉強のためにNode.jsを使いたかったですし)