- Published on
Bashから本のバーコードを画像から読み取ってISBNコードを取得する
- Authors
- Name
- Shou Arisaka / 有坂翔
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](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.png](https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_215e4d36-d40e-438a-846e-c0bd940efe04.png)
![https://yuis.xsrv.jp/data/QvP8B6rztvEeQ2I6gbkjF4uiyhb0SlAS.jpg](https://yuis.xsrv.jp/data/QvP8B6rztvEeQ2I6gbkjF4uiyhb0SlAS.jpg)
次にバーコードが一つだけしか入ってない状態の画像でやってみます。
![https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_4adde2cf-8376-4f92-b412-c276f11937cb.png](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](https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_ac1310b0-dee6-47ab-b9bc-b01f9aff8016.png)
読み取り可能なバーコードが2つ以上ある場合は、最後に取得されたバーコードが優先されるという感じでしょうか。
ISBNを取得したい場合はそれだけ978
から始まる方のバーコードだけを映るようにして画像を取るようにする必要がありそうです。
![https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_45513158-8345-4481-aafb-f9311b280d56.png](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'