In simple English
People write street addresses in many different ways, using local shortcuts and different languages. This library takes a messy, handwritten address and cleans it up into a standard form. It recognizes street names, house numbers and postal codes across more than sixty languages. It does not put a pin on a map or check if an address is real. Instead, it prepares addresses so your search engine or database can compare them easily.
What it is
libpostal is a C library that uses machine learning models trained on open mapping data to parse and normalize global street addresses. It provides official bindings for popular programming languages so you can call its functions from your own software.
What it is good for
Solo builders working on mapping tools, delivery apps, or database deduplication who need to clean up messy user-submitted addresses before searching or storing them.
- Understands addresses in over sixty languages and writing systems.
- Turns abbreviations and spelled-out numbers into standard forms.
- Provides official bindings for Python, Ruby, Go, Java, PHP, and NodeJS.
- Written in C, so compilation and linking require system-level build tools.
- The data models are large, needing several gigabytes of disk space and memory.
- The core library was created years ago and has seen few recent feature updates.
custom regular expressions and giant synonym dictionaries
Elasticsearch
- pelias/pelias3.6k stars
A modular open-source geocoder engine that indexes and searches geographic locations.
- OpenCageData/address-formatting450 stars
A collection of country-specific templates for formatting postal addresses correctly.
- Future-Scholars/paperlib2.3k stars
A desktop library for research papers that fills in the details itself.
- mozilla/pdf.js54k stars
A PDF reader written in JavaScript that renders documents inside a web page with no plugin.
- Hack-with-Github/Awesome-Hacking123k stars
An index of 81 curated security reading lists, with one line on each.
git clone https://github.com/openvenues/libpostal cd libpostal ./bootstrap.sh ./configure --datadir=/path/to/data/dir make -j4 sudo make install