From 5a871934907842d6f6013a6d92a4e17f3e285088 Mon Sep 17 00:00:00 2001 From: Marko Ferme Date: Wed, 31 Aug 2022 06:52:47 +0200 Subject: [PATCH] Hitri popravki in navodila --- docker-compose.yml | 5 ++ requirements.txt | 3 +- .../controllers/doc2text_controller.py | 39 +++++--------- .../controllers/extract_controller.py | 52 ++++++++++++++++++- 4 files changed, 72 insertions(+), 27 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 7a8c9a3..ef263a3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,3 +11,8 @@ services: - ./swagger_server/classla/classla_resources:/root/classla_resources environment: - PYTHONUNBUFFERED=1 + tika: + image: apache/tika + restart: always + ports: + - 9998:9998 diff --git a/requirements.txt b/requirements.txt index 00f2e3a..67765bc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,4 +10,5 @@ python-decouple==3.6 pandas==1.3.3 python-docx==0.8.11 lxml==4.8.0 -PyPDF2==2.10.4 \ No newline at end of file +PyPDF2==2.10.4 +requests \ No newline at end of file diff --git a/swagger_server/controllers/doc2text_controller.py b/swagger_server/controllers/doc2text_controller.py index 920846a..fbfb935 100644 --- a/swagger_server/controllers/doc2text_controller.py +++ b/swagger_server/controllers/doc2text_controller.py @@ -1,6 +1,7 @@ import connexion import six # import tika +import requests from swagger_server import util import pandas as pd @@ -20,37 +21,25 @@ def datoteka_v_besedilo_post(file=None): # noqa: E501 :rtype: str """ - + #zakaj ? tika server se požene zraven v dodatnem containerju in se datoteka samo pošlje tja, nazaj pa se dobi čisto besedilo... + #tika ima rest api if file is None: return "No file provided", 400 - elif "openxmlformats-officedocument.wordprocessingml.document" in file.content_type: - content = [p.text for p in docx.Document(file).paragraphs] - elif "text/plain" in file.content_type: - content = file.read().decode('utf-8') - elif "application/pdf" in file.content_type: - reader = PdfReader(file) - content = '\n'.join([p.extract_text() for p in reader.pages]) - content = "ZACASNO UPORABLJEN DRUGI BRALEC KOT TIKA, TA BO SE DODANA KASNEJE...\n\n" + content - elif "text/xml" in file.content_type: - root = ET.parse(file).getroot() - plainText = root.findall('PlainText') - if len(plainText) == 0: - return "Didn't find anything in PlainText", 400 - content = '\n'.join([pt.text for pt in plainText]) - else: - return "Currently supporing only docx, txt/plain, pdf, xml*... more will be added later", 501 - return content, 200 + tika_server="http://tika:9998/tika" + response=requests.post(tika_server, data=file) + return response.text, 200 def get_text_ocr(file=None): # noqa: E501 - """Pretvori datoteko formata pdf, doc, docx, ppt, xls,... v besedilo s pomočjo ocr razpoznavanja + - # noqa: E501 + if file is None: + return "No file provided", 400 + + tika_server="http://tika:9998/tika" + #za ocr se zraven samo doda header + response=requests.post(tika_server, data=file,headers={"X-Tika-PDFOcrStrategy":"ocr_only","X-Tika-OCRLanguage":"slv+eng"}) + return response.text, 200 - :param file: - :type file: strstr - :rtype: str - """ - return 'Not yet implemented' diff --git a/swagger_server/controllers/extract_controller.py b/swagger_server/controllers/extract_controller.py index c0006c3..b8ec2e2 100644 --- a/swagger_server/controllers/extract_controller.py +++ b/swagger_server/controllers/extract_controller.py @@ -18,4 +18,54 @@ def get_candidates(body): # noqa: E501 """ if connexion.request.is_json: body = IzlusciBody.from_dict(connexion.request.get_json()) # noqa: E501 - return 'do some magic!3' + + + data={ + terminoloski_kandidati:[ + { + "POSoznake": "Ncmsn", + "kandidat": "vpliv", + "kanonicnaoblika": "vpliv", + "nosilnautez": 0.8008282, + "podporneutezi": [ + 6.0274563, + 6.0274563 + ], + "pogostostpojavljanja": [101,71] + }, + { + "POSoznake": "Agpnsg Ncnsg", + "kandidat": "bivalen okolje", + "kanonicnaoblika": "bivalno okolje", + "nosilnautez": 0.60254, + "podporneutezi": [ + 3.263, + 2.134 + ], + "pogostostpojavljanja": [27,11] + }, + { + "POSoznake": "Agpmsny Ncmsn Ncmpg", + "kandidat": "motorični status otrok", + "kanonicnaoblika": "motorični status otrok", + "nosilnautez": 0.3324, + "podporneutezi": [ + 1.221, + 3.323 + ], + "pogostostpojavljanja": [31,51] + }, + { + "POSoznake": "Agpnsn Ncnsn", + "kandidat": "diplomsko delo", + "kanonicnaoblika": "diplomsko delo", + "nosilnautez": 0.2008282, + "podporneutezi": [ + 0.883, + 1.02 + ], + "pogostostpojavljanja": [1241,111] + } + ] + } + return data