Invoice2data Как использовать многострочный - PullRequest
0 голосов
/ 20 января 2020

Я пытался реализовать Invoice2data, но не могу заставить работать многострочный вариант. Моя секция pdf-элемента выглядит следующим образом (what - это то, что отображается в invoice2data --debug):

 Term                   Product                                        Amount

 1 mo                   Basic Websites Renewal     C$99.99
                           fa6.4bc.myinfo.com
 1 mo                   Renewal Usage                                  C$0.00
                        Total

Основываясь на документации , я думаю, что yml должен выглядеть примерно так this:

lines:
    start: Term\s+Product\s+Amount
    end: \s+Total
    first_line: \d+\smo
    #last_line: .+
    line: (?P<term>.+)\s+(?P<product>.+)\s+(?P<amount>\d+\.\d+)

start -> получить заголовок

end -> извлечь слово 'Total'

first_line -> получить '1 мес'

last_line -> это не обязательное, поэтому я просто удалил

строка: честно, эта строка меня смущает. Я копирую / вставляю из do c и пытался запустить его в regexr.com и regex101.com, но оба они не смогли разрешить строку ... Я думаю, что он предполагает использование результата regex '. + 'и поместите его в переменную?

Как видите, вторая строка не всегда появляется. Было бы неплохо сохранить его, но любой ответ помог бы.

Когда я выполняю команду, вот что я получаю:

DEBUG:invoice2data.extract.invoice_template:field=lines | regexp=OrderedDict([('start', 'Term\\s+Product\\s+Amount'), ('end', '\\s+Total'), ('first_line', '\\d+\\smo'), ('line', '(?P<term>.+)\\s+(?P<product>.+)\\s+(?P<amount>\\d+\\.\\d+)')])
Traceback (most recent call last):
  File "/home/mr/PycharmProjects/pdf_to_pinv/venv/bin/invoice2data", line 8, in <module>
    sys.exit(main())
  File "/home/mr/PycharmProjects/pdf_to_pinv/venv/local/lib/python2.7/site-packages/invoice2data/main.py", line 201, in main
    res = extract_data(f.name, templates=templates, input_module=input_module)
  File "/home/mr/PycharmProjects/pdf_to_pinv/venv/local/lib/python2.7/site-packages/invoice2data/main.py", line 93, in extract_data
    return t.extract(optimized_str)
  File "/home/mr/PycharmProjects/pdf_to_pinv/venv/local/lib/python2.7/site-packages/invoice2data/extract/invoice_template.py", line 174, in extract
    res_find = re.findall(v, optimized_str)
  File "/home/mr/PycharmProjects/pdf_to_pinv/venv/lib/python2.7/re.py", line 181, in findall
    return _compile(pattern, flags).findall(string)
  File "/home/mr/PycharmProjects/pdf_to_pinv/venv/lib/python2.7/re.py", line 237, in _compile
    p, loc = _cache[cachekey]
TypeError: unhashable type: 'OrderedDict'

Кто-нибудь знает, как использовать мульти линейная функция?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...