Document Capture for the 21st Century

January 05, 2025

As much as we’d love to live in a paperless world, the reality is, we’re not there yet. Our vendors provide CoCs and packing slips in all shapes and sizes of crumpled paper, and internally, we still have a need for paper travelers (ring sheets and lot sheets) that lives with our products throughout their production lifecycle.

Early Implementation

Initially, this was straightforward to accommodate – completed or incoming paperwork would simply be scanned and saved in the appropriate location on the server. I created a simple folder structure where data would be saved. Each serial number would have a folder, and within each folder, a “Media” and “Test Results” subfolder would live and the appropriate documents would be saved there. Within a couple of weeks of our first production run, we made a decision to capture and retain images of every serial number that ships – this has proved invaluable. Before too long, a Python script was automatically generating these folders whenever a new serial number was scheduled.

Growth and Bottlenecks

Then production volumes grew, and this immediately became a bottleneck. The first issue was feedback (in the Donald Norman sense of the word) – quality technicians would save the documents, but there was no clear indication that they were saved in the correct place or that this action had been taken.

Our global manufacturing status display quickly grew some Python scraping code to check if these actions had been taken, and then highlight a few fields green when the actions were successful. “Scanned” ink stamps popped up all over the shop.

Then production volumes grew again, and the time it took to place documents in the scanner became problematic even though I had spent a pretty penny on a high-quality document feeder scanner. We would take pictures of serial numbers, and then the camera had to be plugged in, the pictures located, and copied to the correct location.

Each day, a couple of man hours were going towards document management, and in a shop our size that was a pretty big red flag. I began getting a lot of requests to batch uploads for the end of the day, opening us up to risk that a picture or document might not have been captured.

The Problem with Manual Document Management

This really bothered me. I’m a firm believer in using computers to solve computer problems. Reading a serial number off of a harness and locating the corresponding folder on a computer is just not something a human should need to do in this day and age, especially more than once. So we dug back into Python.

Our New Solution

Our new solution is simple, streamlined, and has reduced our document management time to mere minutes per day. We set up a capture station with two cameras – an overhead object camera and a document camera. We use automatically-generated QR codes to store serial number information. To capture images of a serial number, a technician first scans the QR code, and then an “action code” which corresponds to “overhead camera”.

This opens a viewer for the overhead camera where the technician can orient the harness and then press the spacebar to take an image. Each image is marked with the serial number and timestamp and automatically saved in the correct location on our server. If it makes sense to capture images of multiple serial numbers at once (as in the case of large batch builds), the technician can simply scan multiple QR codes, and the image will be saved in duplicate for each of them.

To capture a document, the technician will instead scan the “document camera” action code. This opens a viewer to the document camera which then executes some basic corner detection, normalizing, flattening, and whitening algorithms in real time. To allow for rapid placement, we settled on a simple constraint – we provide a surface of the maximum viewable area. A technician simply has to place the document within the bounds of the scanning surface, glance at the screen to make sure the image is of sufficient quality, and hit the spacebar to automatically save the document in the correct location.

This is far and away the fastest scanning solution I’ve ever seen, and the best part is, it’s cheap and reproducible. Since its introduction, our shop has grown two more document scanning stations with plans to add more, and we’ve added QR codes to all received purchase orders, giving us the data structure we need to immediately associates incoming CoCs with products at the serial number level.

Final Thoughts

While document capture might not be the most exciting area of research, I feel these are the types of innovations that will make the biggest difference in improving the quality and reliability of the data we capture, reducing the frustration and struggle of our employees, and ensuring that products go out the door effortlessly and correctly every time. I’m excited to implement many more solutions like this in the next year!