RSSAmplifier

Blog

FairScan Blog

A personal logbook about building FairScan, a simple and respectful document scanner for Android.

fairscan.orgRSS feed ↗15 posts

Latest posts

Keeping FairScan simple isn't simple

I present FairScan as a "simple and respectful" app. But those are not just words to talk about FairScan, they are key values that drive development. I dedicated one of my first blog posts to explain what I see as a "respectful" app and I think that "simple" also deserves a few explanations. What I mean by "simple" Let's first clarify what I mean when I describe FairScan as a "simple" app.…

When a scan becomes a searchable PDF

Let's say that you signed a 5-page work contract. You have a paper document but no electronic version. Now you want to find a particular clause in the contract. How can you find it quickly? If you scan it with FairScan, you can now get a PDF which you can directly search for text. You may also copy any text from it, for example the paragraph you were looking for, and paste it in another…

Donations, without expectations

I give FairScan to everyone who wants to use it. The app is free and doesn't include any behavior that goes against users' interest: no ads, no tracking, no collection of your data, no premium version... That's possible because FairScan does not have to serve the interests of a business. I'm an independent developer doing all kinds of tasks for FairScan: software development (of course) product…

Working on FairScan or getting a "real job"?

I've been working actively on FairScan for almost a year now. Why do I spend my time working on an open source project rather than getting a "real job"? What drives me? To explain that, I have to write about myself, much more than I did so far in this blog. That feels a bit uncomfortable but it can help convey what I'm trying to achieve. Over the last 25 years, I had several jobs as a software…

Where to cut? Automatic document cropping strategies

When you start a scan in FairScan and point your device to a document, the app detects the document and displays a quadrilateral on top of the image to show how it will crop it when you press the capture button. Two separate steps happen one after the other: A machine-learning segmentation model detects which pixels of the image are part of the document. An algorithm derives a quadrilateral from…

What's a good scan?

In my previous post, I talked about failed scans, but what's a good scan? What does it look like? How is it different from a photo? It's a question that comes back regularly when I work on FairScan, and I still don't have a clear answer. What I know is that this question quietly drives many of the strategic choices I make. I recently worked on improving how FairScan handles color documents, and…

Learning from failed scans

Since version 1.0, released last September, FairScan has been updated 11 times with regular improvements. Many of those updates focus on FairScan's core, the automatic processing of captured images, with the goal of producing clean PDFs effortlessly. And yet, the result is not always what you expect. The result is sometimes not as good as what you get from a commercial app, even if it's done in a…

FairScan can now be called from other apps

FairScan was designed to make document scanning very easy. It lets you decide what to do with the resulting PDF: you can store it on your device, or share it using any app installed on your phone that declares it can handle PDF files. With FairScan 1.9.0, the latest release as of today, FairScan also makes it possible for other apps to call it directly and receive a PDF in return. Making apps…

A data-driven approach to color detection in FairScan

FairScan's goal is to make it fast and easy for users to get a PDF. To achieve that, the app handles all image processing steps automatically. As a user, you have implicit expectations about the result. One of them is simple: if you see colors on your document, you expect a color PDF. Otherwise, you expect a grayscale one. That sounds easy. But with FairScan 1.7, I could see myself that the app…

Creating an open source app for everyone: it takes more than code

My ambition with FairScan is not just to build an open-source app: it's to make an app that everyone can use, including all the people who don't know what GitHub is. That's definitely not easy and it takes more than writing good code. Before starting FairScan, I already knew there was a big difference between good software and a good product. Now, I experience it very concretely. This is my daily…

Building a public dataset for FairScan

To automatically detect documents, FairScan uses an image segmentation model. The dataset needs to reflect the situations the model should be able to handle, so the model's accuracy depends heavily on the quality and size of that data. For FairScan, I decided to build a dedicated dataset and to make it public. That turned out to be quite an experience. Why building a public dataset? Before…

Making document detection more reliable

I released the first public version of FairScan about two months ago. It aims to be very simple , so that one can get a PDF in just a few seconds. To achieve that, the app relies heavily on automatic processing... but that's easier said than done. The very first review I got on the Play Store read something like: It doesn't work, "no document detected" on every page . Not exactly what I had hoped,…

What's a respectful app?

I often describe FairScan as simple and respectful . But what does "respectful" really mean when we talk about apps? We live in a world where there’s an app for everything, and we’re constantly pushed to install more. Yet almost no one talks about "respectful apps". A quick search online gives barely a few hundred results. In other words: it’s not even a topic. So let me explain what I mean when I…

The Heart of FairScan: the image processing pipeline explained

How does FairScan work at its core? How does it transform an image captured by the phone's camera into the page of a PDF document that doesn’t just look like a photo? From the user’s point of view, it feels like a single transformation that happens in less than a second. Let’s look at the different steps involved, illustrated with a visual example. Segmentation The first step is image segmentation…

FairScan's purpose

I just published the first version of FairScan and I'm starting this blog to share my experience developing this project. This first post is about the vision behind FairScan: what I'm trying to achieve, and what I'm not aiming for. I started FairScan to fill a need I have, and one that many people share: every now and then I have to turn a piece of paper into a PDF. Of course, there are many apps…