-import os
import shutil
import tempfile
import uuid
"""
parser = RasterisedDocumentParser(uuid.uuid4())
page_count = parser.get_page_count(
- os.path.join(self.SAMPLE_FILES, "simple-digital.pdf"),
+ (self.SAMPLE_FILES / "simple-digital.pdf").as_posix(),
"application/pdf",
)
self.assertEqual(page_count, 1)
page_count = parser.get_page_count(
- os.path.join(self.SAMPLE_FILES, "multi-page-mixed.pdf"),
+ (self.SAMPLE_FILES / "multi-page-mixed.pdf").as_posix(),
"application/pdf",
)
self.assertEqual(page_count, 6)
parser = RasterisedDocumentParser(uuid.uuid4())
with self.assertLogs("paperless.parsing.tesseract", level="WARNING") as cm:
page_count = parser.get_page_count(
- os.path.join(self.SAMPLE_FILES, "password-protected.pdf"),
+ (self.SAMPLE_FILES / "password-protected.pdf").as_posix(),
"application/pdf",
)
self.assertEqual(page_count, None)
def test_thumbnail(self):
parser = RasterisedDocumentParser(uuid.uuid4())
thumb = parser.get_thumbnail(
- os.path.join(self.SAMPLE_FILES, "simple-digital.pdf"),
+ (self.SAMPLE_FILES / "simple-digital.pdf").as_posix(),
"application/pdf",
)
self.assertIsFile(thumb)
parser = RasterisedDocumentParser(uuid.uuid4())
thumb = parser.get_thumbnail(
- os.path.join(self.SAMPLE_FILES, "simple-digital.pdf"),
+ (self.SAMPLE_FILES / "simple-digital.pdf").as_posix(),
"application/pdf",
)
self.assertIsFile(thumb)
def test_thumbnail_encrypted(self):
parser = RasterisedDocumentParser(uuid.uuid4())
thumb = parser.get_thumbnail(
- os.path.join(self.SAMPLE_FILES, "encrypted.pdf"),
+ (self.SAMPLE_FILES / "encrypted.pdf").as_posix(),
"application/pdf",
)
self.assertIsFile(thumb)
def test_get_dpi(self):
parser = RasterisedDocumentParser(None)
- dpi = parser.get_dpi(os.path.join(self.SAMPLE_FILES, "simple-no-dpi.png"))
+ dpi = parser.get_dpi((self.SAMPLE_FILES / "simple-no-dpi.png").as_posix())
self.assertEqual(dpi, None)
- dpi = parser.get_dpi(os.path.join(self.SAMPLE_FILES, "simple.png"))
+ dpi = parser.get_dpi((self.SAMPLE_FILES / "simple.png").as_posix())
self.assertEqual(dpi, 72)
def test_simple_digital(self):
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "simple-digital.pdf"),
+ (self.SAMPLE_FILES / "simple-digital.pdf").as_posix(),
"application/pdf",
)
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "with-form.pdf"),
+ (self.SAMPLE_FILES / "with-form.pdf").as_posix(),
"application/pdf",
)
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "with-form.pdf"),
+ (self.SAMPLE_FILES / "with-form.pdf").as_posix(),
"application/pdf",
)
def test_signed(self):
parser = RasterisedDocumentParser(None)
- parser.parse(os.path.join(self.SAMPLE_FILES, "signed.pdf"), "application/pdf")
+ parser.parse((self.SAMPLE_FILES / "signed.pdf").as_posix(), "application/pdf")
self.assertIsNone(parser.archive_path)
self.assertContainsStrings(
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "encrypted.pdf"),
+ (self.SAMPLE_FILES / "encrypted.pdf").as_posix(),
"application/pdf",
)
def test_with_form_error_notext(self):
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "with-form.pdf"),
+ (self.SAMPLE_FILES / "with-form.pdf").as_posix(),
"application/pdf",
)
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "with-form.pdf"),
+ (self.SAMPLE_FILES / "with-form.pdf").as_posix(),
"application/pdf",
)
def test_image_simple(self):
parser = RasterisedDocumentParser(None)
- parser.parse(os.path.join(self.SAMPLE_FILES, "simple.png"), "image/png")
+ parser.parse((self.SAMPLE_FILES / "simple.png").as_posix(), "image/png")
self.assertIsFile(parser.archive_path)
with tempfile.TemporaryDirectory() as tempdir:
# Copy sample file to temp directory, as the parsing changes the file
# and this makes it modified to Git
- sample_file = os.path.join(self.SAMPLE_FILES, "simple-alpha.png")
- dest_file = os.path.join(tempdir, "simple-alpha.png")
+ sample_file = self.SAMPLE_FILES / "simple-alpha.png"
+ dest_file = Path(tempdir) / "simple-alpha.png"
shutil.copy(sample_file, dest_file)
- parser.parse(dest_file, "image/png")
+ parser.parse(dest_file.as_posix(), "image/png")
self.assertIsFile(parser.archive_path)
parser = RasterisedDocumentParser(None)
dpi = parser.calculate_a4_dpi(
- os.path.join(self.SAMPLE_FILES, "simple-no-dpi.png"),
+ (self.SAMPLE_FILES / "simple-no-dpi.png").as_posix(),
)
self.assertEqual(dpi, 62)
def f():
parser.parse(
- os.path.join(self.SAMPLE_FILES, "simple-no-dpi.png"),
+ (self.SAMPLE_FILES / "simple-no-dpi.png").as_posix(),
"image/png",
)
def test_image_no_dpi_default(self):
parser = RasterisedDocumentParser(None)
- parser.parse(os.path.join(self.SAMPLE_FILES, "simple-no-dpi.png"), "image/png")
+ parser.parse((self.SAMPLE_FILES / "simple-no-dpi.png").as_posix(), "image/png")
self.assertIsFile(parser.archive_path)
def test_multi_page(self):
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-digital.pdf"),
+ (self.SAMPLE_FILES / "multi-page-digital.pdf").as_posix(),
"application/pdf",
)
self.assertIsFile(parser.archive_path)
def test_multi_page_pages_skip(self):
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-digital.pdf"),
+ (self.SAMPLE_FILES / "multi-page-digital.pdf").as_posix(),
"application/pdf",
)
self.assertIsFile(parser.archive_path)
def test_multi_page_pages_redo(self):
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-digital.pdf"),
+ (self.SAMPLE_FILES / "multi-page-digital.pdf").as_posix(),
"application/pdf",
)
self.assertIsFile(parser.archive_path)
def test_multi_page_pages_force(self):
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-digital.pdf"),
+ (self.SAMPLE_FILES / "multi-page-digital.pdf").as_posix(),
"application/pdf",
)
self.assertIsFile(parser.archive_path)
def test_multi_page_analog_pages_skip(self):
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-images.pdf"),
+ (self.SAMPLE_FILES / "multi-page-images.pdf").as_posix(),
"application/pdf",
)
self.assertIsFile(parser.archive_path)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-images.pdf"),
+ (self.SAMPLE_FILES / "multi-page-images.pdf").as_posix(),
"application/pdf",
)
self.assertIsFile(parser.archive_path)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-images.pdf"),
+ (self.SAMPLE_FILES / "multi-page-images.pdf").as_posix(),
"application/pdf",
)
self.assertIsFile(parser.archive_path)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-digital.pdf"),
+ (self.SAMPLE_FILES / "multi-page-digital.pdf").as_posix(),
"application/pdf",
)
self.assertIsNone(parser.archive_path)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-images.pdf"),
+ (self.SAMPLE_FILES / "multi-page-images.pdf").as_posix(),
"application/pdf",
)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-digital.pdf"),
+ (self.SAMPLE_FILES / "multi-page-digital.pdf").as_posix(),
"application/pdf",
)
self.assertIsNotNone(parser.archive_path)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-images.pdf"),
+ (self.SAMPLE_FILES / "multi-page-images.pdf").as_posix(),
"application/pdf",
)
self.assertIsNotNone(parser.archive_path)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-digital.pdf"),
+ (self.SAMPLE_FILES / "multi-page-digital.pdf").as_posix(),
"application/pdf",
)
self.assertIsNone(parser.archive_path)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-images.pdf"),
+ (self.SAMPLE_FILES / "multi-page-images.pdf").as_posix(),
"application/pdf",
)
self.assertIsNotNone(parser.archive_path)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-digital.pdf"),
+ (self.SAMPLE_FILES / "multi-page-digital.pdf").as_posix(),
"application/pdf",
)
self.assertIsNone(parser.archive_path)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-images.pdf"),
+ (self.SAMPLE_FILES / "multi-page-images.pdf").as_posix(),
"application/pdf",
)
self.assertIsNone(parser.archive_path)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-mixed.pdf"),
+ (self.SAMPLE_FILES / "multi-page-mixed.pdf").as_posix(),
"application/pdf",
)
self.assertIsNotNone(parser.archive_path)
["page 1", "page 2", "page 3", "page 4", "page 5", "page 6"],
)
- with open(os.path.join(parser.tempdir, "sidecar.txt")) as f:
+ with (parser.tempdir / "sidecar.txt").open() as f:
sidecar = f.read()
self.assertIn("[OCR skipped on page(s) 4-6]", sidecar)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "single-page-mixed.pdf"),
+ (self.SAMPLE_FILES / "single-page-mixed.pdf").as_posix(),
"application/pdf",
)
self.assertIsNotNone(parser.archive_path)
],
)
- with open(os.path.join(parser.tempdir, "sidecar.txt")) as f:
+ with (parser.tempdir / "sidecar.txt").open() as f:
sidecar = f.read().lower()
self.assertIn("this is some text, but in an image, also on page 1.", sidecar)
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-mixed.pdf"),
+ (self.SAMPLE_FILES / "multi-page-mixed.pdf").as_posix(),
"application/pdf",
)
self.assertIsNone(parser.archive_path)
@override_settings(OCR_MODE="skip", OCR_ROTATE_PAGES=True)
def test_rotate(self):
parser = RasterisedDocumentParser(None)
- parser.parse(os.path.join(self.SAMPLE_FILES, "rotated.pdf"), "application/pdf")
+ parser.parse((self.SAMPLE_FILES / "rotated.pdf").as_posix(), "application/pdf")
self.assertContainsStrings(
parser.get_text(),
[
"""
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "multi-page-images.tiff"),
+ (self.SAMPLE_FILES / "multi-page-images.tiff").as_posix(),
"image/tiff",
)
self.assertIsFile(parser.archive_path)
- Text from all pages extracted
"""
parser = RasterisedDocumentParser(None)
- sample_file = os.path.join(self.SAMPLE_FILES, "multi-page-images-alpha.tiff")
+ sample_file = self.SAMPLE_FILES / "multi-page-images-alpha.tiff"
with tempfile.NamedTemporaryFile() as tmp_file:
shutil.copy(sample_file, tmp_file.name)
parser.parse(
- Text from all pages extracted
"""
parser = RasterisedDocumentParser(None)
- sample_file = os.path.join(
- self.SAMPLE_FILES,
- "multi-page-images-alpha-rgb.tiff",
- )
+ sample_file = (
+ self.SAMPLE_FILES / "multi-page-images-alpha-rgb.tiff"
+ ).as_posix()
with tempfile.NamedTemporaryFile() as tmp_file:
shutil.copy(sample_file, tmp_file.name)
parser.parse(
parser = RasterisedDocumentParser(None)
parser.parse(
- os.path.join(self.SAMPLE_FILES, "rtl-test.pdf"),
+ (self.SAMPLE_FILES / "rtl-test.pdf").as_posix(),
"application/pdf",
)
self.assertRaises(
ParseError,
parser.parse,
- os.path.join(self.SAMPLE_FILES, "simple-digital.pdf"),
+ (self.SAMPLE_FILES / "simple-digital.pdf").as_posix(),
"application/pdf",
)
class TestParserFileTypes(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
- SAMPLE_FILES = os.path.join(os.path.dirname(__file__), "samples")
+ SAMPLE_FILES = Path(__file__).parent / "samples"
def test_bmp(self):
parser = RasterisedDocumentParser(None)
- parser.parse(os.path.join(self.SAMPLE_FILES, "simple.bmp"), "image/bmp")
+ parser.parse((self.SAMPLE_FILES / "simple.bmp").as_posix(), "image/bmp")
self.assertIsFile(parser.archive_path)
self.assertIn("this is a test document", parser.get_text().lower())
def test_jpg(self):
parser = RasterisedDocumentParser(None)
- parser.parse(os.path.join(self.SAMPLE_FILES, "simple.jpg"), "image/jpeg")
+ parser.parse((self.SAMPLE_FILES / "simple.jpg").as_posix(), "image/jpeg")
self.assertIsFile(parser.archive_path)
self.assertIn("this is a test document", parser.get_text().lower())
def test_heic(self):
parser = RasterisedDocumentParser(None)
- parser.parse(os.path.join(self.SAMPLE_FILES, "simple.heic"), "image/heic")
+ parser.parse((self.SAMPLE_FILES / "simple.heic").as_posix(), "image/heic")
self.assertIsFile(parser.archive_path)
self.assertIn("pizza", parser.get_text().lower())
@override_settings(OCR_IMAGE_DPI=200)
def test_gif(self):
parser = RasterisedDocumentParser(None)
- parser.parse(os.path.join(self.SAMPLE_FILES, "simple.gif"), "image/gif")
+ parser.parse((self.SAMPLE_FILES / "simple.gif").as_posix(), "image/gif")
self.assertIsFile(parser.archive_path)
self.assertIn("this is a test document", parser.get_text().lower())
def test_tiff(self):
parser = RasterisedDocumentParser(None)
- parser.parse(os.path.join(self.SAMPLE_FILES, "simple.tif"), "image/tiff")
+ parser.parse((self.SAMPLE_FILES / "simple.tif").as_posix(), "image/tiff")
self.assertIsFile(parser.archive_path)
self.assertIn("this is a test document", parser.get_text().lower())
@override_settings(OCR_IMAGE_DPI=72)
def test_webp(self):
parser = RasterisedDocumentParser(None)
- parser.parse(os.path.join(self.SAMPLE_FILES, "document.webp"), "image/webp")
+ parser.parse(
+ (self.SAMPLE_FILES / "document.webp").as_posix(),
+ "image/webp",
+ )
self.assertIsFile(parser.archive_path)
# Older tesseracts consistently mangle the space between "a webp",
# tesseract 5.3.0 seems to do a better job, so we're accepting both