logo
Published on

Bashから本のバーコードを画像から読み取ってISBNコードを取得する

Authors

Linuxのコマンドライン言語である、Bashプログラミング言語(スクリプティング言語)から本のバーコードを画像から読み取ってISBNコードを取得する方法について紹介します。

ubuntu/bashからバーコード読み取りをするなら、ZBar bar code readerがよさげ。こちらを使って検証していきたいと思います。

sudo apt update  ; sudo apt-get install -y zbar-tools

まずは以下の画像から取得してみます。バーコードが2つ入った状態ですね。

https://yuis.xsrv.jp/data/QvP8B6rztvEeQ2I6gbkjF4uiyhb0SlAS.jpg
yuis@yuis:/home/development/tmp$ zbarimg http://yuis.xsrv.jp/data/QvP8B6rztvEeQ2I6gbkjF4uiyhb0SlAS.jpg
EAN-13:1920093014007
scanned 1 barcode symbols from 1 images in 1.1 seconds
https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_215e4d36-d40e-438a-846e-c0bd940efe04.pnghttps://yuis.xsrv.jp/data/QvP8B6rztvEeQ2I6gbkjF4uiyhb0SlAS.jpg

次にバーコードが一つだけしか入ってない状態の画像でやってみます。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_4adde2cf-8376-4f92-b412-c276f11937cb.png
yuis@yuis:/home/development/tmp$ zbarimg http://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_4adde2cf-8376-4f92-b412-c276f11937cb.png
EAN-13:9784575239058
scanned 1 barcode symbols from 1 images in 0.02 seconds
https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_ac1310b0-dee6-47ab-b9bc-b01f9aff8016.png

読み取り可能なバーコードが2つ以上ある場合は、最後に取得されたバーコードが優先されるという感じでしょうか。

ISBNを取得したい場合はそれだけ978から始まる方のバーコードだけを映るようにして画像を取るようにする必要がありそうです。

International Standard Book Number - Wikipedia https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_45513158-8345-4481-aafb-f9311b280d56.png

軽くsedしてみると良いと思います。

zbarimg http://yuis.xsrv.jp/data/sAg7tDRwjsRJqmoBMmvzyQFFfSyUUjNE.jpg | sed -Ee 's/EAN-13:(.*)/\1/g'