mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-26 08:12:34 -04: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