Papermerge is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. Instead of having piles of paper documents all over your desk, office or drawers - you can quickly scan them and configure your scanner to directly upload to Papermerge DMS.
Papermerge DMS on its turn will OCR the document and index it. You will be able to quickly find any (scanned!) document using full text search capabilities.
It is built on Django 3.1.
Papermerge is actively developed and we release quite frequently.
This is web-based software. This means there is no executable file (aka no .exe files), and it must be run on a web server and accessed through a web browser.
To be efficient you always need to choose right tool for the problem. Because Document Management is too generic - I think that a definition of what is a Document in context of this software is needed.
For Papermerge a document is anything which is a good candidate for archiving - some piece of information which is not editable but you need to store it for future reference. For example receipts are perfect examples - you don't need to read receipts everyday, but eventually you will need them for your tax declaration. In this sense - scanned documents, which are usually in PDF or TIFF format, are perfect match.
Out of scope (at least for near future) are Office documents (ODT, DOCX....), text files (notes) which usually are editable. In future Papermerge might support Office documents (ODT etc), but that feature will be provided as plugins.
Papermerge is simply not designed to store books. Yes, you can scan a book and import it in Papermege, but again - this is not what Papermerge was designed for.
- Documents of pdf, jpg, png, tiff formats are supported
- Per page OCR of the documents
- Full Text Search of the scanned documents
- Tags - assign colored tags to documents or folders (screencast demo)
- Documents and Folders - users can organize documents in folders
- Multi-User
- User permissions management
- Document permissions management
- REST API (screencast demo)
- Page Management - delete, reorder, cut & paste pages (screencast demo)
- Basic automation (screencast demo)
❤️ ❤️ ❤️
In case you find Papermerge useful, I modestly ask you to support Papermerge via a small donation. Even an amount as small as $9 will make a huge difference.
For donations, you can use three channels paypal, patreon and github itself:
💚 💚 💚
In live demo some of the features are disabled. For example you cannot manage users, API tokens. Folders/documents with a red lock are read-only for guest user.
- Live demo
- Username:
guest
- Password:
password77a
Papermerge has high quality, up-to-date and to the point documentation. Documentation contains lots of images, text and videos. It is regularly updated. If you spot outdated or incomplete article please open an issue on github - it will be handled immediately. Documentation issues have high priority.
We welcome contributions! In general, if change is very small, like fixing a documentation typo, remove unused variable or minor adjustments of docker related files - you can create a pull request right away. If your change is small and reasonable it will be (very likely) almost immediately accepted.
For bigger changes, like a new feature or even change/add/remove of whole paragraph in documentation - please first discuss the change you wish to make via GitHub issue, pull request or email.
For more information, see the contributing file.
You can try it with just 3 simple commands (you need git and docker-compose):
git clone [email protected]:ciur/papermerge.git
cd docker/1.4/
docker-compose up
Docker compose command will pull all necessary docker images and start papermerge (stable 1.5.5 version) on http://localhost:8000. Access it with default username/password: admin/admin.
There are couple options:
In order to run unit tests:
$ ./run_tests.sh
Which basically is same as:
$ DJANGO_SETTINGS_MODULE=config.settings.test
$ ./manage.py test papermerge/test/
Notice that you can pass any command line argument to run_tests.sh
script
and those arguments will be routed further to manage.py
.
On multi-core processors it is much more efficient to use --parallel
argument which splits test suite between CPU cores:
$ ./run_tests.sh --parallel
On Dell-XPS laptop with 12-core i7 CPU it takes about 5 seconds to run all
unit tests in parallel; without --parallel
argument on same CPU it takes
approximately 17 seconds to run them.
Another commonly used argument is --failfast
. If --failfast
argument
is provided, a failed test will conveniently stop execution of entire test
suite:
$ ./run_tests.sh --failfast
In order to run only views tests and stop if there is a failing test:
$ DJANGO_SETTINGS_MODULE=config.settings.test
$ ./manage.py test papermerge/test/views/ --failfast
Following command will run only tests from papermerge/test/views folder and show ALL python and django warnings:
$ DJANGO_SETTINGS_MODULE=config.settings.test
$ python manage.py -W all test papermerge/test/views/
For commercial support, consulting and customization please contact us:
- Email: [email protected]
- Web: www.papermerge.com/contact
- Twitter: @papermerge