Code Monkey home page Code Monkey logo

paperless's Introduction

Paperless

Join the chat at https://gitter.im/danielquinn/paperless

Documentation

Scan, index, and archive all of your paper documents

I hate paper. Environmental issues aside, it's a tech person's nightmare:

  • There's no search feature
  • It takes up physical space
  • Backups mean more paper

In the past few months I've been bitten more than a few times by the problem of not having the right document around. Sometimes I recycled a document I needed (who keeps water bills for two years?) and other times I just lost it... because paper. I wrote this to make my life easier.

How it Works

  1. Buy a document scanner like this one.
  2. Set it up to "scan to FTP" or something similar. It should be able to push scanned images to a server without you having to do anything.
  3. Have the target server run the Paperless consumption script to OCR the PDF and index it into a local database.
  4. Use the web frontend to sift through the database and find what you want.
  5. Download the PDF you need/want via the web interface and do whatever you like with it. You can even print it and send it as if it's the original. In most cases, no one will care or notice.

Stability

Paperless is still under active development (just look at the git commit history) so don't expect it to be 100% stable. I'm using it for my own documents, but I'm crazy like that. If you use this and it breaks something, you get to keep all the shiny pieces.

Requirements

This is all really a quite simple, shiny, user-friendly wrapper around some very powerful tools.

  • ImageMagick converts the images between colour and greyscale.
  • Tesseract does the character recognition.
  • GNU Privacy Guard is used as the encryption backend.
  • Python 3 is the language of the project.
    • Pillow loads the image data as a python object to be used with PyOCR.
    • PyOCR is a slick programmatic wrapper around tesseract.
    • Django is the framework this project is written against.
    • Python-GNUPG decrypts the PDFs on-the-fly to allow you to download unencrypted files, leaving the encrypted ones on-disk.

The keen eye might have noticed that we're converting a PDF to an image to be read by Tesseract, and to do this we're using a chain of: scanned PDF > Imagemagick > Pillow > PyOCR > Tesseract > text. It's not ideal, but apparently, Pillow lacks the ability to read PDFs, and PyOCR requires a Pillow object, so we're sort of stuck.

Documentation

It's all available on ReadTheDocs.

Important Note

Document scanners are typically used to scan sensitive documents. Things like your social insurance number, tax records, invoices, etc. While paperless encrypts the original PDFs via the consumption script, the OCR'd text is not encrypted and is therefore stored in the clear (it needs to be searchable, so if someone has ideas on how to do that on encrypted data, I'm all ears). This means that paperless should never be run on an untrusted host. Instead, I recommend that if you do want to use it, run it locally on a server in your own home.

paperless's People

Contributors

danielquinn avatar gitter-badger avatar jat255 avatar mrwacky42 avatar the01 avatar wttw avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.