Book Scanning

Books are really important to me. I grew up collecting all kinds, with the highest interest in the most-obscure ones. I often read non-fiction, and I'm a picky reader. For years, I wondered about how best to interact with the medium. Through those years, I tried different vehicles, ranging from "writing in the margins" through "highlighting on a Kobo", and I must now say: most ebooks suck. They are rubbish, and lack a deeper vision for this medium. Here are some points I'd like to make, in bullet-pseudoquestion form:

In this document, I outline my process of getting the best versions of books, and how I have a better-than-paper experience. I am able to take more literature, read longer with a lighter device that performs valuable notebooking features. This is my preferred method of working: interacting with the reflections of thought.

  1. Hardware
  2. Software
  3. Scanning Variety
  4. Feeding the Machine
  5. Image Processing
  6. Metadata
  7. Reading Experience
  8. Appendix A: Topology mapping with Microsoft Kinect


There are many options for scanning books, and almost all of them are expensive, bulky, and inaccessible. The only one that cuts through that (pun intended) is by using a guillotine to cut the spine, turn the pages to loose-leaf, and loading the paper into an automatic document feed scanner.

Before I scan, I need to chop the pages. So, I take a trip to a UPS store, which has a binding cutting machine. Because I had a lot of books, we struck a deal to the price (he didn't have a SKU for the service, and was was the franchise owner). I get even further discounts when I pre-measure my books. They have a machine that allows one to set the width, and a metal plate moves into precise position. Then, the book is inserted, and the guillotine comes down, separating the spine. Sometimes, there is some residual glue stuck between the pages, which is poor for page separation, so it doesn't hurt to cut more off than you think, without getting into ink. The words are cut out later and repaged digitally, so borders aren't super important.

I do my scanning with a Fujitsu fi-4120c, which is a USB 1.1 600 Gray DPI, 300 Color DPI duplex feed scanner. I found that it had perfect support with SANE, the most-popular scanning software in GNU/Linux. Although there were OS issues anyway, those were solved with further software (life sometimes ain't pretty). One thing I do regularly is to clean the sensor glass, which sometimes gets gummy from glue left on cover pages. I have also had to replace the two rubber pads that help separate pages; these were available on eBay for $5, but they would have been simple to make (interested in seeing the dimensions, click here).


The scanner plugs into my computer with USB. I had some problems at first, because my USB ports are USB 3, and there are EHCI issues with GNU/Linux that prevented my drive from working under CentOS 7. So, I tried a QEMU virtual machine with USB passthrough, and that didn't work either (same problem). Then, I tried it with KVM and Spice passthrough, and Debian 9, and that worked. It supported copy/paste to and from the guest out of the box, which was an impressive touch for unixland software.

Under that VM, I run some commands to scan various kinds of material. For paperback books, it usually starts with the cover. The front of the front cover gets scanned at 300 DPI in-color, and the back of the front cover is usually monotone. Then, all the pages are duplex monotone for paperbacks, or grayscale for gray imagery, or color for color imagery. I use the commands contained in this script &link&

After I scan the pages, I transfer them to my host computer with rsync, to where I can do some heavy processing. The process first stabilizes the pages, then cuts out the text, repages it with a clean margin, optional masks of gray/color areas, OCR, aggregating into a PDF, and finally adding metadata such as publishing details and table of contents.

Scanning Variety

There are lots of kinds of books, and their peculiarities must be tended to in order to accomplish the best scan (don't let them be chopped in haste!). Some of the types of books include: paperback text, hardcover text, paperback textbook, hardcover color textbook, gallery books, and many more.

Feeding the Machine

Image Processing


Reading Experience

Appendix A: Topology mapping with Microsoft Kinect

3D image of book from Kinect

Before I decided to cut the spines off my books, I investigated using a Kinect to make a 3D point-cloud of the book's pages, then use that to dewarp a high-resolution image. I did some searching, but only a couple people played around with the idea...eight years ago! After investigating this myself, I determined it was a fool's path.

First, there's a problem with the software. It is difficult to source the software that communicates and controls a Microsoft Xbox 360 Kinect, and there is another version (my kind) that was made for PC, with a different model number. I was able to overcome this limitation by using Robot Operating System (ROS).

Second, even though I was now able to obtain the point cloud data, there was a problem: it was extremely noisy! To add, the depth resolution of the Kinect wasn't that great, either. At this point, I thought it was a neat idea, but didn't have the patience to continue pursuing it. There are better ideas, like shining a LASER line at an angle on the page, which could give a simpler, better measure. I ended up chopping my books, because I no longer saw it as destructive; done right, it was a transformation that made them more-valuable, not less.

Shown above, is a point cloud in MeshLab. At left is my rolling chair, center the book, and upper-right is a crumpled tissue.

Go home