Metadata-Version: 2.1
Name: receipt-parser
Version: 0.0.26
Summary: Allow receipt parsing
Home-page: https://github.com/slgero/receipt_parser
Author: Savvov Sergey
Author-email: sersavvov@yandex.ru
License: UNKNOWN
Keywords: receipt parser,product parser,nlp
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Natural Language :: Russian
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: numpy (>=1.18.3)
Requires-Dist: pandas (>=1.0.3)
Requires-Dist: pandarallel (>=1.4.8)
Requires-Dist: pymystem3 (>=0.2.0)
Requires-Dist: setuptools
Requires-Dist: torch
Requires-Dist: torchvision
Requires-Dist: wget (>=3.2)
Requires-Dist: youtokentome (>=1.0.6)

<p align='center'>
	<img src="https://i.ibb.co/P6HGqnf/receipt.png" width="450" title="Designed by Freepik">
 <br>
 <a href='https://pypi.org/project/receipt-parser/'><img alt="Version" src="https://img.shields.io/pypi/v/receipt-parser?logo=pypi&logoColor=FFE873"></a>
   <a href='https://github.com/slgero/receipt_parser/actions?query=workflow%3Abuild'><img alt="GitHub Workflow Status" src="https://github.com/slgero/receipt_parser/workflows/build/badge.svg"></a>
   <a href='https://github.com/slgero/receipt_parser/actions?query=workflow%3A%22Upload+Python+Package%22'><img alt="Upload Python Package"
src="https://github.com/slgero/receipt_parser/workflows/Upload%20Python%20Package/badge.svg"></a>
   <a href="https://www.codefactor.io/repository/github/slgero/receipt_parser"><img src="https://www.codefactor.io/repository/github/slgero/receipt_parser/badge" alt="CodeFactor" /></a>
  <a href='https://opensource.org/licenses/MIT'><img alt="GitHub" src="https://img.shields.io/github/license/slgero/receipt_parser"></a><br> 
</p>

# Receipt parser🧾
## What is it?
**receipt_parser** - Python библиотека, помогающая распознавать товарную позицию из чеков. Для это задачи есть хороший [сервис](https://receiptnlp.tinkoff.ru/#/) от Тинькофф, однако он не справляется с [грязными данными](https://proverkacheka.com/check/9282000100225162-17705-420231526), как на картинке выше. Изначально была задумка использовать нейронные сети, однако в процессе работы, понял, что на разметку нужно потратить много времени/денег, да и модель, основанная на правилах и словарях, даёт хороший [результат](https://github.com/slgero/receipt_parser/tree/master/receipt_parser/benchmarks).

## Features
* распознавание продукта;
* определение категории товара;
* распознавание брендов;
* перевод англицизмов (`хугарден --> hoegaarden`)🍺


## Where to get it
Исходный код в размещен на [GitHub](https://github.com/slgero/receipt_parser).

Библиотека размещёна на [Python package index](https://pypi.org/project/receipt-parser/):
```bash
pip install receipt-parser
```
>Если возникнет ошибка при установке пакета:
>`Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-izdic4qt/youtokentome/`
>То установите Cython и повторите попытку:
	```bash
	pip install Cython
	```

## Usage
Для распознавания сейчас доступна только [RuleBased](https://github.com/slgero/receipt_parser/blob/master/receipt_parser/receipt_parser.py#L75) модель.

На вход можно подавать как строку:
```python
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__)*:
```python
from receipt_parser import RuleBased

rb = RuleBased()
rb.parse(df)
```
Также в библиотеке есть два вспомогательных класса:
* Normalizer - для нормализации;
* Finder - для поиска по словарям.

## Future work

 - [ ] Добавить тесты
 - [ ] Дополнить словари и собранные датасеты
 - [ ] Поднять сервис
 - [ ] Перейти на нейронные сети...

## Support the project 🤗
Буду рад, если вы:
* найдёте баги;
* сможете оптимизировать код;
* дополните словари и датасеты;
* поможете с разметкой.


