Receipt parser🧾
What is it?
receipt_parser - Python библиотека, помогающая распознавать товарную позицию из чеков. Для это задачи есть хороший сервис от Тинькофф, однако он не справляется с грязными данными, как на картинке выше. Изначально была задумка использовать нейронные сети, однако в процессе работы, понял, что на разметку нужно потратить много времени/денег, да и модель, основанная на правилах и словарях, даёт хороший результат.
Features
- распознавание продукта;
- определение категории товара;
- распознавание брендов;
- перевод англицизмов (
хугарден --> hoegaarden)🍺
Where to get it
Исходный код в размещен на GitHub.
Библиотека размещёна на Python package index:
pip install receipt-parser
Если возникнет ошибка при установке пакета:
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-izdic4qt/youtokentome/То установите Cython и повторите попытку:pip install Cython
Usage
Для распознавания сейчас доступна только RuleBased модель.
На вход можно подавать как строку:
from receipt_parser import RuleBased
product_desription = 'Нап.пив.ХУГАР.ГРЕЙПФ.н/ф 0.47л'
rb = RuleBased()
rb.parse(product_desription)
output:
| name | product_norm | brand_norm | cat_norm | |
|---|---|---|---|---|
| 0 | Нап.пив.ХУГАР.ГРЕЙПФ.н/ф 0.47л | напиток, пиво | hoegaarden | Воды, соки, напитки |
Так и pd.DataFrame (колонка с товарной позицией должна называться name):
from receipt_parser import RuleBased
rb = RuleBased()
rb.parse(df)
Также в библиотеке есть два вспомогательных класса:
- Normalizer - для нормализации;
- Finder - для поиска по словарям.
Future work
- Добавить тесты
- Дополнить словари и собранные датасеты
- Поднять сервис
- Перейти на нейронные сети...
Support the project 🤗
Буду рад, если вы:
- найдёте баги;
- сможете оптимизировать код;
- дополните словари и датасеты;
- поможете с разметкой.
Metadata
Release files for receipt-parser 0.0.28
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| receipt_parser-0.0.28.tar.gz | 18.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| receipt_parser-0.0.28-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.2 kB
Release files / receipt_parser-0.0.28.tar.gz
| Download URL | receipt_parser-0.0.28.tar.gz |
|---|---|
| Size | 18.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cc5d8de59ad45e8aa9b0924dae2a9d0eca3c01bbc90b98fde5fef684569ecb35
|
|
BLAKE2b-256 checksum How to use checksums |
1e103a84acf4f5ed6b563abe8ebd5533b99fd651e1f5db6ac2f34430654b71fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5
|
Release files / receipt_parser-0.0.28-py3-none-any.whl
| Download URL | receipt_parser-0.0.28-py3-none-any.whl |
|---|---|
| Size | 19.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
303ec0eabbcc03c250fafad1e1e0cc2640c48ba8eb932104051794269b04b537
|
|
BLAKE2b-256 checksum How to use checksums |
6be951c2f2d670d40f10c48b85143116ea3b43fb47fdb93d6171b56991691939
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5
|