Cataloguing my home library
I have many books at home, and I’ve always wanted to keep a catalogue of my books. But because I have so many books, manually typing in ISBNs was out of the question. I wanted a tech solution, preferably free. I explored the possibility of software to recognise barcodes from photos, since it would be easy to snap photos of barcodes of my books.
Being a Windows person, I searched for and tried Windows programs first. The only candidate I found was bcTester. It recognised the first photo, then choked on the second. I tried cropping that, and it recognised it, but then choked on the third. To make it easier, I adjusted my photos to increase the contrast (easily done in batch), but cropping each photo individually would defeat the whole purpose of my “exercise”, and bcTester did not support batch processing either, so I decided to pass.
The next program I tried was Zebra, a *nix open-source project. I spent some time getting the pre-requisites installed, including messing around with some symbolic links, before I managed to successfully compile and run zebraimg. Once I did, zebraimg was just amazing. It zipped through my barcode images and got most correct.

Out of 75 images, zebraimg failed to process four (three of which were too blur, and one was because the barcode was scraped out partially), got two wrong and was unsure of two (generated more than one barcode).

- Barcode that zebraimg failed to process

- Barcode that zebraimg processed wrongly

- Barcode that zebraimg was unsure
Recognising the barcodes was only the first step. Books without 13-digit ISBNs have barcodes that are “useless”, because they do not identify the book uniquely. In fact, I had three books in this batch with the same barcode. Hence, I had to manually key in the 10-digit ISBN for those books that did not have barcodes beginning with “978“. Once that was done, I finally had a list of (10- and 13-digit) ISBNs.
There are two routes for managing a home library: online or offline. For online, I settled on two: LibraryThing and Gurulib. GuruLib is free, and allows mass importing of books by uploading a file. Unfortunately, the interface could use some tweaks. While importing my list, I noticed there were duplicates, and some books were not imported. However, the website does not show which books failed to be imported. Since I only recorded the ISBNs of my books, this irked me as I was not able to cross-check the titles. I decided to pass on GuruLib.
LibraryThing is free for the first 200 books, after that, it requires payment of USD10/year or a one-time payment of USD25. I tried to avoid LibraryThing at first, becuase I know I have more than 200 books. Since I didn’t have much of a choice left, I gave LibraryThing a spin, and was impressed. The interface is clean and plain, but it is functional and fast. Importing my books was so easily done, and the import screen showed that two books failed to be imported because they were not found in the default databases (Amazon US, UK and the Library of Congress). I tried Amazon CA and found my books. Amazing! I just might subscribe to LibraryThing.
For the offline option, I only tried Collectorz.com Book Collector. It did the job, but at USD29.95, I wasn’t too keen. While importing my books, it failed on a few. I checked the ISBNs against my images, and found that those barcodes had been processed wrongly by zebraimg. I manually typed in the barcode, searched again, and found the correct books.
This has been an interesting experiment and exercise. And now that I’ve finally figured and tested things out, I’d definitely save time on the subsequent batches of books.
In the next post, I will show a simple PHP script I wrote to easily batch process and manage the decoded barcodes.