Я могу определить путь в командной строке, но не могу определить путь к файлу в сценарии? - PullRequest
0 голосов
/ 19 марта 2019

elis_client_example.py

from __future__ import division, print_function

import argparse
import json
import os
import csv
import requests
import polling

DEFAULT_API_URL='https://all.rir.rossum.ai/'

class ElisClient(object):

def __init__(self, secret_key, url=DEFAULT_API_URL):
    self.secret_key = secret_key
    self.url = url
    # we do not use requests.auth.HTTPBasicAuth
    self.headers = {'Authorization': 'secret_key ' + self.secret_key}

def send_document(self, document_path):

    with open(document_path, 'rb') as f:
        content_type = self._content_type(document_path)
        response = requests.post(
            self.url + '/document',
            files={'file': (os.path.basename(document_path), f, content_type)},
            headers=self.headers)
    return json.loads(response.text)

@staticmethod
def _content_type(document_path):
    return 'image/png' if document_path.lower().endswith('.png') else 'application/pdf'

def get_document_status(self, document_id):

    response = requests.get(self.url + '/document/' + document_id, headers=self.headers)
    response_json = json.loads(response.text)
    if response_json['status'] != 'ready':
        response_json = response_json
        #print(response_json)
    return response_json

def get_document(self, document_id, max_retries=30, sleep_secs=5):
    """
    Waits for document via polling.
    """
    def is_done(response_json):
        return response_json['status'] != 'processing'

    return polling.poll(
        lambda: self.get_document_status(document_id),
        check_success=is_done,
        step=sleep_secs,
        timeout=int(round(max_retries * sleep_secs)))

def parse_args():
parser = argparse.ArgumentParser(description='Elis API client example.')
parser.add_argument('document_path', metavar='DOCUMENT_PATH',
                    help='Document path (PDF/PNG)')
parser.add_argument('-s', '--secret-key', help='Secret API key')
parser.add_argument('-u', '--base-url', default=DEFAULT_API_URL, help='Base API URL')

return parser.parse_args()

def main():
args = parse_args()
client = ElisClient(args.secret_key, args.base_url)
#print('Submitting document:', args.document_path)

send_result = client.send_document(args.document_path)
document_id = send_result['id']
#print('Document id:', document_id)
extracted_document = client.get_document(document_id)
#print('Extracted data:')
#Extracted_data =(json.dumps(extracted_document, indent=4))
#print(json.dumps(extracted_document, indent=4))
with open('jfile.json', 'w') as jsonfile:
 json.dump(extracted_document, jsonfile, sort_keys = True, indent = 4,ensure_ascii = False)

if __name__ == '__main__':
main()

Запустите код в команде propmt: python elis_client_example.py input.pdf -s "ключ аутентификации" Но при запуске кода в python3 (скрипт) напрямую возникает ошибка, так как путь к документу не определен. Запустите код в команде propmt: python elis_client_example.py input.pdf -s "ключ аутентификации" Но при запуске кода в python3 (скрипте) напрямую возникает ошибка, так как путь к документу не определен.

1 Ответ

0 голосов
/ 19 марта 2019

это код командной строки, поэтому, когда вы запускаете то же самое в командной строке, вы передаете имя документа, пока выполняете свою программу. Но когда вы работаете в любом идеале, вы на самом деле запускаете как « python elis_client_example.py », а не как в командной строке. отсюда и ошибка.

...