Commit 6f9345b9 authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

fixes #12 extract PDF text layer

parent bdae12c3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ APIs et interfaces de stockage de médias.
- PostgreSQL >= 11
- exiftool
- imagemagick (convert)
- pdftoppm
- pdftoppm, pdftotext (poppler-utils)
- vips
- tesseract

+25 −0
Original line number Diff line number Diff line
@@ -277,6 +277,31 @@ class File(Resource):
                (_, created,) = MetadataResourceValue.objects.get_or_create(
                    metadata=meta, resource=self, value=content.strip()
                )
        if self.has_extension("pdf") or self.has_extension("ai"):
            # extract PDF text layer if available
            pdftotext_return_code = call(
                ["pdftotext", self.local_path(), self.local_path() + ".pdftotext.txt"]
            )
            if pdftotext_return_code == 0:
                with open(self.local_path() + ".pdftotext.txt", "r") as text_layer:
                    content = text_layer.read()
                    public_owner = User.objects.get(username="public_user")
                    metas_set, created = MetadataSet.objects.get_or_create(
                        title="OCR", owner=public_owner
                    )
                    meta, created = Metadata.objects.get_or_create(
                        owner=public_owner, title="pdftotext output", set=metas_set
                    )
                    (_, created,) = MetadataResourceValue.objects.get_or_create(
                        metadata=meta, resource=self, value=content.strip()
                    )

    def has_extension(self, extension: str) -> bool:
        extension = extension.lower()
        for ext in self.file_type.extensions.all():
            if ext.label == extension:
                return True
        return False

    def save(self, *args, **kwargs):
        self.ptr_owner = self.owner