2013年7月27日土曜日

[Emacs] 括弧内のハイライト表示

対応する括弧をハイライト表示する設定は以前から有効にしていたが、
括弧内をハイライト表示できるのは知らなかった。

;;; 対応する括弧をハイライトさせる
(show-paren-mode t)
; highlight entire bracket expression
(setq show-paren-style 'expression) ← ◆この設定


有効にすると一目で括弧の範囲が分かるので、結構便利。
下は options) の次にカーソルがある場合の表示。



ハイライトの色は変更できるのかな?

参考
How to Set Emacs's User Interface to Modern Conventions

2013年7月26日金曜日

[Ruby][Solr][PDF] PDF解析ライブラリを作成

PDF文書のテキスト抽出

Solrを使ってPDF文書の全文検索システムを作ろうかといろいろと調査中である。
Solr Cellを使うと、PDF文書やWord文書を簡単に取り込めるようだけど、ワードが含まれる場所(ページ番号)は関連付けされないようだ。
ページ番号が不明だと、対象となるPDF文書が分かっても、その文書を開いてから、そのワードを再検索しなければならない。それは面倒なので、ページ番号も一緒に取得できるようにして、コマンドラインから、ページ番号を指定して、PDF文書を開きたい。
まずは、PDF文書からページ単位でテキストを抽出する必要があるので、Rubyのpdf-reader を使い、手持ちの日本語のPDF文書を処理してみたが、最初のページは正しくテキストを抽出できたが、以降のページは文字化けし、正しくテキストを抽出できなかった。
Ubuntu12.04のXPDF(pdfinfo, pdftotextコマンド)では文字化けすることなくテキストを抽出できたので、これをラップしたRubyのライブラリを作成した。

ソースはこちらから。
https://github.com/takeisa/xpdf-ruby

サンプルコード

require './xpdf'

doc = XPDF::Reader.read('sample.pdf')

puts "Title: #{doc.title}"
puts "Author: #{doc.author}"
puts "PDF Version: #{doc.pdf_version}"

doc.pages.each do |page|
  puts page
end


何も難しいところはない。
XPDF::Document#pagesにページ毎に抽出したテキストを格納している。

参考

pdf-reader https://github.com/yob/pdf-reader