mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
fix up the tika parser
This commit is contained in:
parent
c05bfb894a
commit
de32addf76
@ -21,26 +21,44 @@ class TikaDocumentParser(DocumentParser):
|
|||||||
return make_thumbnail_from_pdf(
|
return make_thumbnail_from_pdf(
|
||||||
self.archive_path, self.tempdir, self.logging_group)
|
self.archive_path, self.tempdir, self.logging_group)
|
||||||
|
|
||||||
|
def extract_metadata(self, document_path, mime_type):
|
||||||
|
tika_server = settings.PAPERLESS_TIKA_ENDPOINT
|
||||||
|
try:
|
||||||
|
parsed = parser.from_file(document_path, tika_server)
|
||||||
|
except Exception as e:
|
||||||
|
self.log("warning", f"Error while fetching document metadata for "
|
||||||
|
f"{document_path}: {e}")
|
||||||
|
return []
|
||||||
|
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
"namespace": "",
|
||||||
|
"prefix": "",
|
||||||
|
"key": key,
|
||||||
|
"value": parsed['metadata'][key]
|
||||||
|
} for key in parsed['metadata']
|
||||||
|
]
|
||||||
|
|
||||||
def parse(self, document_path, mime_type):
|
def parse(self, document_path, mime_type):
|
||||||
self.log("info", f"[TIKA_PARSE] Sending {document_path} to Tika server")
|
self.log("info", f"Sending {document_path} to Tika server")
|
||||||
tika_server = settings.PAPERLESS_TIKA_ENDPOINT
|
tika_server = settings.PAPERLESS_TIKA_ENDPOINT
|
||||||
|
|
||||||
try:
|
try:
|
||||||
parsed = parser.from_file(document_path, tika_server)
|
parsed = parser.from_file(document_path, tika_server)
|
||||||
except requests.exceptions.HTTPError as err:
|
except Exception as err:
|
||||||
raise ParseError(
|
raise ParseError(
|
||||||
f"Could not parse {document_path} with tika server at {tika_server}: {err}"
|
f"Could not parse {document_path} with tika server at "
|
||||||
|
f"{tika_server}: {err}"
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
|
||||||
self.text = parsed["content"].strip()
|
self.text = parsed["content"].strip()
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.date = dateutil.parser.isoparse(parsed["metadata"]["Creation-Date"])
|
self.date = dateutil.parser.isoparse(
|
||||||
except:
|
parsed["metadata"]["Creation-Date"])
|
||||||
pass
|
except Exception as e:
|
||||||
|
self.log("warning", f"Unable to extract date for document "
|
||||||
|
f"{document_path}: {e}")
|
||||||
|
|
||||||
self.archive_path = self.convert_to_pdf(document_path)
|
self.archive_path = self.convert_to_pdf(document_path)
|
||||||
|
|
||||||
@ -49,16 +67,16 @@ class TikaDocumentParser(DocumentParser):
|
|||||||
gotenberg_server = settings.PAPERLESS_TIKA_GOTENBERG_ENDPOINT
|
gotenberg_server = settings.PAPERLESS_TIKA_GOTENBERG_ENDPOINT
|
||||||
url = gotenberg_server + "/convert/office"
|
url = gotenberg_server + "/convert/office"
|
||||||
|
|
||||||
self.log("info", f"[TIKA] Converting {document_path} to PDF as {pdf_path}")
|
self.log("info", f"Converting {document_path} to PDF as {pdf_path}")
|
||||||
files = {"files": open(document_path, "rb")}
|
files = {"files": open(document_path, "rb")}
|
||||||
headers = {}
|
headers = {}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = requests.post(url, files=files, headers=headers)
|
response = requests.post(url, files=files, headers=headers)
|
||||||
response.raise_for_status() # ensure we notice bad responses
|
response.raise_for_status() # ensure we notice bad responses
|
||||||
except requests.exceptions.HTTPError as err:
|
except Exception as err:
|
||||||
raise ParseError(
|
raise ParseError(
|
||||||
f"Could not contact gotenberg server at {gotenberg_server}: {err}"
|
f"Error while converting document to PDF: {err}"
|
||||||
)
|
)
|
||||||
|
|
||||||
file = open(pdf_path, "wb")
|
file = open(pdf_path, "wb")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user