PDF中の表をCSVに変換するプログラムの話

こんにちは。日本の半導体事業を応援する大根です。先日、Renesasのマイコンの開発環境を作ってて思ったんです。データシートからレジスタの番地を手動で書き出すの、面倒じゃね?と。
そこで、(だいたい)自動で複数ページに渡るPDF中の表をCSVに変換するスクリプトを書きました。

作ったものはこちら
使ってないサブルーチンとか、謎の変数とかある気がするけど、気にしたら負けです。計画性のあるプログラミングなんて、してません。

実行環境

  • perlインタープリタ
  • XML::Simple(CPANからDL出来ると思う)
  • pdftotext(poppler付属のユーティリティ)

が必要です。Debian的環境なら、
apt-get install perl libxml-simple-perl poppler-utils
で導入できます。自分でDLしなきゃいけないとか、Windows最低だな。

使い方
./read_sfr.pl PDFファイル 開始ページ 終了ページ
で実行します。実行すると、何回か質問されて、答えるとCSVを標準出力に吐きます。
質問はエラー出力を使うので、標準出力をファイルにリダイレクトしてやれば普通のCSVが得られます。
使い方がよく分かんなかったら、ソースを読むと分かると思います。読めない人は、読めるようになりましょう。

性能
認識精度は、今回読んでいた、RX63NのデータシートのIOレジスタの表を読ませるのに必要な程度。他のデータシートでもそこそこ使えます。文字の位置以外は解析に利用していないので、同じセルの中のデータを他のセルと誤認することは割とありえます。面倒なのであんまり対策してません。それは手動でやったら良いんじゃないかな。

ところで、R8CとかRL78ではSFRって呼んでたのに、なんでIOレジスタっていう名前にしたんでしょうね?SFRの方が、呼び名としては好きだったんだけどな・・・。まあ、他のメーカはIOレジスタって呼んでることが多いような気がするけど、それよりパッケージの呼び名をもっとわかりやすくしてくれませんかね?

聞かれてないのに勝手にQ&A

  • なんでメーカのヘッダファイル使わないの?
    フリーソフトウェア信仰病の所為です。
  • データシートからヘッダを作ったら、それにRenesasの著作権は無いの?
    しりません。
  • 既存のもっと良いツール無いの?
    知りません。知らないから作った。探したらあるかも知れないけど、探してないから知らない。
  • なんでperlなの?pythonとか使えよ
    perlが好きだからです。それ以上の理由は必要ない。
  • なんでRenesasはそれをcsvで公開しないの?
    Renesas先生、教えてください。公開してたら、ごめんなさい。どこで公開してるんですか?
  • なんで学祭直前で忙しいのにこんなことしてるの?
    なんででしょうね

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です