# A Document Scanning App That Integrates with Collect

**URL:** <https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214>\
**Category:** Showcase\
**Tags:** form-design, odk-collect, odk-xlsform\
**Created:** [December 15, 2025, 8:10pm UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214 "2025-12-15T20:10:39Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![MinimalPotato](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/minimalpotato/32/30174_2.png) [@MinimalPotato](https://forum.getodk.org/u/MinimalPotato)\
**Post date:** [December 15, 2025, 8:10pm UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/1 "2025-12-15T20:10:39Z")

</div>

Hello everyone! - Hope you're doing well! 👋

I wanted to share a small exploration I recently worked on, hoping it might be helpful to someone!

## 🟢 The "What & Why?" / Problem Statement

Recently, I was looking for an **open-source document scanner app** that could:

- Use an Android phone's camera to scan documents,
- Automatically Crop or Enhance Images / Generate a PDF, and
- Attach that PDF directly to a specific ODK Collect form - ideally automatically because in practice, many data collectors struggle to remember which scanned file (or clicked image) belongs to which particular saved draft form. This often leads to incorrect attachments and, ultimately, incorrect submissions. Automating this hand-off felt like a meaningful improvement to me.

During my research, I came across this app: [FairScan](https://github.com/pynicolas/FairScan) - a clean, respectful, open-source document scanner. While it worked well as a scanner, it didn't interact with ODK Collect in the way I was hoping it would (i.e., returning the scanned PDF back to ODK Collect automatically).

## 🟢 The "What I did?" / Solution

So, I experimented with making minimal changes to FairScan's codebase, using [ODK Collect's documented intent-based integration](https://docs.getodk.org/collect-external-apps/), to allow the scanned PDF to be sent straight back to ODK Collect - and it worked exactly as intended! 🥳

For anyone interested in trying this out or exploring further, I'm including a **demonstration** , the **GitHub repo for the minimal code I modified** to make it work (contains built **.apk files** as well!), and a **sample XLSForm** below:

### ▫ Quick Demonstration [50 seconds]:

### ▫ GitHub Repo / Modified Source Code / Built .apk Files:

🔗 [Here!](https://github.com/tsb-dev/FairScanODK)

### ▫ Sample XLSForm:

[fileuploadtest.xlsx](https://forum.getodk.org/uploads/short-url/eTZdpoRdnQdEbOUdBPBEiQ9RT87.xlsx) (8.3 KB)

That's all!

Have a great day! 😄 - and, Merry Christmas in advance! 🎄

---

<div class="post-metadata">

**Author:** ![ahblake](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/ahblake/32/22392_2.png) [@ahblake](https://forum.getodk.org/u/ahblake)\
**Post date:** [December 15, 2025, 10:37pm UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/2 "2025-12-15T22:37:42Z")

</div>

That's great! I could see a lot of cases where that would be super useful.

Have you asked the FairScan maintainers if they would integrate your changes so the app store version would work rather than sideloading an apk?

---

<div class="post-metadata">

**Author:** ![MinimalPotato](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/minimalpotato/32/30174_2.png) [@MinimalPotato](https://forum.getodk.org/u/MinimalPotato)\
**Post date:** [December 16, 2025, 6:59am UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/3 "2025-12-16T06:59:42Z")

</div>

Thank you so much!

That's a great suggestion, and it would indeed remove the need for sideloading the APK altogether. I've reached out to the FairScan's maintainer regarding this and will keep this thread updated as I hear back.

Appreciate the input - thanks again! 😄

---

<div class="post-metadata">

**Author:** ![Faisal\_Amani](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/faisal_amani/32/22270_2.png) [@Faisal\_Amani](https://forum.getodk.org/u/Faisal_Amani)\
**Post date:** [December 21, 2025, 5:27am UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/4 "2025-12-21T05:27:54Z")

</div>

![scan](https://getodk.b-cdn.net/uploads/default/original/3X/8/d/8dfddcfb4a91f971b000502d40d8d94d4af0ee5f.jpeg)How to solve this i try it but it message me like this even I installed the fair scan to

---

<div class="post-metadata">

**Author:** ![jking](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/jking/32/28650_2.png) [@jking](https://forum.getodk.org/u/jking)\
**Post date:** [December 21, 2025, 4:54pm UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/5 "2025-12-21T16:54:29Z")

</div>

Did you install the app using the custom apk?

I just tested and it works, but if I use the normal FairScan app I get the same error as you.

---

<div class="post-metadata">

**Author:** ![Faisal\_Amani](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/faisal_amani/32/22270_2.png) [@Faisal\_Amani](https://forum.getodk.org/u/Faisal_Amani)\
**Post date:** [December 23, 2025, 5:12am UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/7 "2025-12-23T05:12:35Z")

</div>

I installed this app to.

> <https://play.google.com/store/apps/details?id=org.fairscan.app&hl=en>
>
> Scan your documents in seconds with an app that respects yo...

---

<div class="post-metadata">

**Author:** ![MinimalPotato](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/minimalpotato/32/30174_2.png) [@MinimalPotato](https://forum.getodk.org/u/MinimalPotato)\
**Post date:** [December 25, 2025, 9:37pm UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/8 "2025-12-25T21:37:06Z")

</div>

**Update:**

Hi everyone! 👋

Looks like we've received a lovely Christmas present from the FairScan's maintainer! 🎁

I'm happy to share that **official integration for FairScan with ODK Collect is now live**! With this release (FairScan v1.9.0), there's **no longer any need to sideload a custom APK**. FairScan can now be installed directly from the [Google PlayStore](https://play.google.com/store/apps/details?id=org.fairscan.app) and works seamlessly with ODK Collect out of the box! 😄

I've attached a **sample XLSForm** below that works with this new official release:  
[fileuploadtest.xlsx](https://forum.getodk.org/uploads/short-url/qRfZ3XzQqP9kGOLa4z9wL68Iykj.xlsx) (8.4 KB)

I would also suggest checking out [FairScan's GitHub repository](https://github.com/pynicolas/FairScan) and the **updated README** , which now documents this integration.

@ahblake - thanks again for the suggestion, much appreciated!  
@Faisal_Amani - it looks like you're using the Play Store version of FairScan (not the earlier custom APK). Please try the attached XLSForm above; it should start working for you right away.

That's all!

Have a great day, and **Merry Christmas**! 🎄🎊

---

<div class="post-metadata">

**Author:** ![mathieubossaert](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/mathieubossaert/32/6131_2.png) [@mathieubossaert](https://forum.getodk.org/u/mathieubossaert)\
**Post date:** [January 16, 2026, 7:39am UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/9 "2026-01-16T07:39:07Z")

</div>

[https://fairscan.org/blog/fairscan-can-now-be-called-from-other-apps/](https://fairscan.org/blog/fairscan-can-now-be-called-from-other-apps/) 🤩

---

<div class="post-metadata">

**Author:** ![yanokwa](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/yanokwa/32/1695_2.png) [@yanokwa](https://forum.getodk.org/u/yanokwa)\
**Post date:** [January 19, 2026, 4:20pm UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/10 "2026-01-19T16:20:29Z")

</div>



---

<div class="post-metadata">

**Author:** ![yanokwa](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/yanokwa/32/1695_2.png) [@yanokwa](https://forum.getodk.org/u/yanokwa)\
**Post date:** [January 19, 2026, 7:56pm UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/11 "2026-01-19T19:56:45Z")

</div>

We’ve added a tip about using FairScan to the docs at [https://docs.getodk.org/form-question-types/#file-upload-widget](https://docs.getodk.org/form-question-types/#file-upload-widget). Thanks again to @MinimalPotato for all his work on this!

---

<div class="post-metadata">

**Author:** ![Nonsequitur](https://getodk.b-cdn.net/letter_avatar_proxy/v4/letter/n/3ab097/32.png) [@Nonsequitur](https://forum.getodk.org/u/Nonsequitur)\
**Post date:** [January 20, 2026, 7:12am UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/12 "2026-01-20T07:12:49Z")

</div>

[FairScan is also available to install via F-Droid](https://f-droid.org/en/packages/org.fairscan.app/) for those who prefer to direct-install applications without Google’s mediation.

---

<div class="post-metadata">

**Author:** ![Tyler\_Depke](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/tyler_depke/32/17598_2.png) [@Tyler\_Depke](https://forum.getodk.org/u/Tyler_Depke)\
**Post date:** [January 20, 2026, 10:46am UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/13 "2026-01-20T10:46:23Z")

</div>

Wow! This is a big win! w00t! 🎉

I know this is being greedy, but does anyone know of a similar app that could accomplish a similar thing using OCR to fill a text/decimal field?

> [@OCR integration in ODK to extract text data from image](https://forum.getodk.org/t/ocr-integration-in-odk-to-extract-text-data-from-image/6768/6):
>
> I saw many outdated posts on ODK Scan and a single unanswered [OCR Post](https://forum.getodk.org/t/ocr-reader/19431). Seeing as many of these posts seemed to trail off in 2015 and OCR has come a long way in the last decade, has there been any more recent developments on this or any renewed interest in the community to meet this need? Even if this wasn't incorporated into ODK Collect itself, I would think having a very simple external app like [ODK Counter](https://play.google.com/store/apps/details?id=org.opendatakit.counter&hl=en-US) that could perform this function could be a game changer for some scenarios with lots …

I'm not the only one asking:

> [@OCR reader](https://forum.getodk.org/t/ocr-reader/19431):
>
> Hi. Is it possible to use an external application to ODK collect (OCR reader) and obtain the result in a text question, or note?

but I've not heard any developments in this area.

---

<div class="post-metadata">

**Author:** ![MinimalPotato](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/minimalpotato/32/30174_2.png) [@MinimalPotato](https://forum.getodk.org/u/MinimalPotato)\
**Post date:** [January 20, 2026, 5:48pm UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/14 "2026-01-20T17:48:05Z")

</div>

> [@yanokwa](#):
>
> We’ve added a tip about using FairScan to the docs at [https://docs.getodk.org/form-question-types/#file-upload-widget](https://docs.getodk.org/form-question-types/#file-upload-widget). Thanks again to @MinimalPotato for all his work on this!

Glad it helps - thank you very much! 😄

---

<div class="post-metadata">

**Author:** ![chun\_hing\_yap](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/chun_hing_yap/32/13598_2.png) [@chun\_hing\_yap](https://forum.getodk.org/u/chun_hing_yap)\
**Post date:** [January 27, 2026, 12:05am UTC](https://forum.getodk.org/t/a-document-scanning-app-that-integrates-with-collect/57214/15 "2026-01-27T00:05:47Z")

</div>

You can give this a try, it doesn’t work as external app launch from ODK. It is a standalone keyboard. Free but with ads, or else you can buy the app.

[Keyboard with Integrated Barcode, Text (OCR) and NFC Tag Scanner](https://www.tec-it.com/en/software/mobile-data-acquisition/barcode-keyboard/barcodekeyboard-overview/Default.aspx)
