tesseract-ocrを使って紙の書籍のソースコードを読んでみた
どーも。panjaです。
通勤中にちまちまと「レガシーコード改善ガイド」を読んでいます。
- 作者: マイケル・C・フェザーズ
- 出版社/メーカー: 翔泳社
- 発売日: 2016/01/15
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
文章中にはちょいちょいC++やJavaのコードスニペットが現れるのですが、普段IDEの力を借りて開発してることもあり、構文強調表示が無いとまぁ頭に入ってきません。
そんなことを思いながらなので当然モチベーションーも下がってきます。
どうにかしたいなーとぼんやり考えていたのですが、とりあえずデータ化しないと何も出来ないだろうということでOCRにチャレンジしてみました。
使用したOCRライブラリはtesseract-ocrです。元々はHPが開発していたらしいですが、今はGoogleが管理しているようです。オープンソースということで気軽に使用出来ます。
github.com
今回は自作のプログラムで使いたかったので、Githubからクローンしてきてビルドしたものを使いました。その辺の手順なんかはググってもらえればたくさん出てくると思いますので割愛します。
VisualStudio2013でtesseract-ocrをビルドして新規にソリューションを作成しました。
適当にパスなどを通してあげると使えるようになります。
dogear11.hatenablog.com
基本的に上記のページを参考にさせてもらいました。コードもほとんど同じです。
早速結果を見てみましょう。
以下は「レガシーコード改善ガイド」の一部をスキャンしたものです。
この画像から文字を読み取ってみると......
。。。。。。
前半はかなりいい感じですが、後半グダグダですね。
※「recognized text:」はOCRの結果ではありません
ソースコード自体弧を描いてるのはかなりまずい気がします。
が、とりあえず入力画像を2値化してみることにしました。
2値化した入力画像がこちらです。
ゴミも残っていますが、文字自体は結構いい感じに2値化されています。
結果がこちらです。
おぉ!?
少し良くなりましたね。
変な改行なんかが入っていますが改行文字を改行文字でも読み取ったんでしょうか。
ゴミの部分も無理やり文字化しているようですが、それを除くと数文字誤りがありますがそこそこの精度で読み取れているようです。
読書記録(レガシーコード改善ガイド7章)
どーもpanjaです。
少し前からレガシーコード改善ガイドを読んでます。
- 作者: マイケル・C・フェザーズ
- 出版社/メーカー: 翔泳社
- 発売日: 2016/01/15
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
さて、今回は本書の「第7章 いつまで経っても変更作業が終わりません」を読んで思ったことを書いてみたいと思います。
この章では以下が述べられています。
- どんなに綺麗にメンテナンスされているシステムでもコード量が増えてくると変更すべき場所を見つけるのは大変。
- レガシーシステムの場合は変更自体も大変。(コーディングはすぐ終わるかもしれないけど、テストがないので既存の振る舞い含め確認に時間がかかる)
- テストが揃っている環境だとしても、変更に対するフィードバックを素早く(5秒以内!)得る必要がある。
アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技
- 作者: ロバート・C・マーチン,Robert C. Martin,瀬谷啓介
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2008/07/01
- メディア: 単行本
- 購入: 18人 クリック: 586回
- この商品を含むブログ (71件) を見る
こんなとこでしょうか。
ちげーよそんなこと書いてねーよ。お前間違ってるよ。
などなどご意見ありましたら是非コメントお願いします。
私は普段boostなどを使って開発しているので、そりゃあもうビルドは時間がかかります。が、そんなこと言ってても始まらないので依存箇所を出来るだけ小さく出来ないかなど考えることは色々ありそうです。
また、クラスの依存関係を調べるツールを使って既存のクラスがいかに単独でインスタンス化出来ないかも調べてみようと思います。C++で使える便利なツールをご存知の方はぜひぜひ教えてください!
はじめました
はじめまして
日々考えていること、思いつきを書いていこうと思います。
- プログラミング
- プロジェクトマネジメント
- 家族
- バレーボール
このあたりの話題が多くなると思います。