Beispiel #1
0
    def test_image_calc_a4_dpi(self):
        parser = RasterisedDocumentParser(None)

        dpi = parser.calculate_a4_dpi(
            os.path.join(self.SAMPLE_FILES, "simple-no-dpi.png"))

        self.assertEqual(dpi, 62)
Beispiel #2
0
    def test_parse_text_simple_language_match(self):
        parser = RasterisedDocumentParser(self.get_input_file(1), uuid.uuid4())
        text = parser.get_text()
        self.assertEqual(text, "line 0")

        self.assertListEqual([args[1] for args in image_to_string_calls],
                             ["eng"])
Beispiel #3
0
    def test_encrypted(self):
        parser = RasterisedDocumentParser(None)

        parser.parse(os.path.join(self.SAMPLE_FILES, "encrypted.pdf"), "application/pdf")

        self.assertIsNone(parser.archive_path)
        self.assertContainsStrings(parser.get_text(), ["This is a digitally signed PDF, created with Acrobat Pro for the Paperless project to enable", "automated testing of signed/encrypted PDFs"])
Beispiel #4
0
    def test_parse_text_lang_mismatch(self):
        parser = RasterisedDocumentParser(self.get_input_file(3), uuid.uuid4())
        text = parser.get_text()
        self.assertEqual(text, "line 0 line 1 line 2")

        self.assertListEqual([args[1] for args in image_to_string_calls],
                             ["eng", "deu", "deu", "deu"])
Beispiel #5
0
 def test_multi_page_mixed_no_archive(self):
     parser = RasterisedDocumentParser(None)
     parser.parse(os.path.join(self.SAMPLE_FILES, "multi-page-mixed.pdf"),
                  "application/pdf")
     self.assertIsNone(parser.archive_path)
     self.assertContainsStrings(parser.get_text().lower(),
                                ["page 4", "page 5", "page 6"])
Beispiel #6
0
    def test_parse_text_lang_not_installed(self):
        parser = RasterisedDocumentParser(self.get_input_file(4), uuid.uuid4())
        text = parser.get_text()
        self.assertEqual(text, "line 0 line 1 line 2 line 3")

        self.assertListEqual([args[1] for args in image_to_string_calls],
                             ["eng", "eng", "eng", "eng"])
Beispiel #7
0
 def test_skip_noarchive_notext(self):
     parser = RasterisedDocumentParser(None)
     parser.parse(os.path.join(self.SAMPLE_FILES, "multi-page-images.pdf"),
                  "application/pdf")
     self.assertTrue(os.path.isfile(parser.archive_path))
     self.assertContainsStrings(parser.get_text().lower(),
                                ["page 1", "page 2", "page 3"])
Beispiel #8
0
    def test_with_form_error(self):
        parser = RasterisedDocumentParser(None)

        parser.parse(os.path.join(self.SAMPLE_FILES, "with-form.pdf"), "application/pdf")

        self.assertIsNone(parser.archive_path)
        self.assertContainsStrings(parser.get_text(), ["Please enter your name in here:", "This is a PDF document with a form."])
Beispiel #9
0
 def test_is_ocred(self, m2, m):
     parser = RasterisedDocumentParser("", uuid.uuid4())
     m.return_value = "lots of text lots of text lots of text lots of text lots of text lots of text " \
                      "lots of text lots of text lots of text lots of text lots of text lots of text " \
                      "lots of text lots of text lots of text lots of text lots of text lots of text "
     parser.get_text()
     self.assertEqual(m.call_count, 2)
     self.assertEqual(m2.call_count, 0)
Beispiel #10
0
 def test_parse_empty_doc(self):
     parser = RasterisedDocumentParser(self.get_input_file(0), uuid.uuid4())
     try:
         parser.get_text()
     except ParseError as e:
         self.assertEqual("Empty document, nothing to do.", str(e))
     else:
         self.fail("Should raise exception")
Beispiel #11
0
    def test_encrypted(self):
        parser = RasterisedDocumentParser(None)

        parser.parse(os.path.join(self.SAMPLE_FILES, "encrypted.pdf"),
                     "application/pdf")

        self.assertIsNone(parser.archive_path)
        self.assertEqual(parser.get_text(), "")
Beispiel #12
0
    def test_get_dpi(self):
        parser = RasterisedDocumentParser(None)

        dpi = parser.get_dpi(os.path.join(self.SAMPLE_FILES, "simple-no-dpi.png"))
        self.assertEqual(dpi, None)

        dpi = parser.get_dpi(os.path.join(self.SAMPLE_FILES, "simple.png"))
        self.assertEqual(dpi, 72)
Beispiel #13
0
    def test_simple_digital(self):
        parser = RasterisedDocumentParser(None)

        parser.parse(os.path.join(self.SAMPLE_FILES, "simple-digital.pdf"), "application/pdf")

        self.assertTrue(os.path.isfile(parser.archive_path))

        self.assertContainsStrings(parser.get_text(), ["This is a test document."])
Beispiel #14
0
    def test_image_no_dpi_default(self):
        parser = RasterisedDocumentParser(None)

        parser.parse(os.path.join(self.SAMPLE_FILES, "simple-no-dpi.png"), "image/png")

        self.assertTrue(os.path.isfile(parser.archive_path))

        self.assertContainsStrings(parser.get_text().lower(), ["this is a test document."])
Beispiel #15
0
 def test_rotate(self):
     parser = RasterisedDocumentParser(None)
     parser.parse(os.path.join(self.SAMPLE_FILES, "rotated.pdf"), "application/pdf")
     self.assertContainsStrings(parser.get_text(), [
         "This is the text that appears on the first page. It’s a lot of text.",
         "Even if the pages are rotated, OCRmyPDF still gets the job done.",
         "This is a really weird file with lots of nonsense text.",
         "If you read this, it’s your own fault. Also check your screen orientation."
     ])
Beispiel #16
0
    def test_image_calc_a4_dpi(self, m):
        parser = RasterisedDocumentParser(None)

        parser.parse(os.path.join(self.SAMPLE_FILES, "simple-no-dpi.png"), "image/png")

        m.assert_called_once()

        args, kwargs = m.call_args

        self.assertEqual(kwargs['image_dpi'], 62)
Beispiel #17
0
    def test_multi_page_mixed(self):
        parser = RasterisedDocumentParser(None)
        parser.parse(os.path.join(self.SAMPLE_FILES, "multi-page-mixed.pdf"), "application/pdf")
        self.assertTrue(os.path.isfile(parser.archive_path))
        self.assertContainsStrings(parser.get_text().lower(), ["page 1", "page 2", "page 3", "page 4", "page 5", "page 6"])

        with open(os.path.join(parser.tempdir, "sidecar.txt")) as f:
            sidecar = f.read()

        self.assertIn("[OCR skipped on page(s) 4-6]", sidecar)
Beispiel #18
0
    def test_thumbnail_fallback(self, m):

        def call_convert(input_file, output_file, **kwargs):
            if ".pdf" in input_file:
                raise ParseError("Does not compute.")
            else:
                run_convert(input_file=input_file, output_file=output_file, **kwargs)

        m.side_effect = call_convert

        parser = RasterisedDocumentParser(uuid.uuid4())
        parser.get_thumbnail(os.path.join(self.SAMPLE_FILES, 'simple-digital.pdf'), "application/pdf")
Beispiel #19
0
    def test_with_form_error_notext(self):
        parser = RasterisedDocumentParser(None)

        def f():
            parser.parse(os.path.join(self.SAMPLE_FILES, "with-form.pdf"), "application/pdf")

        self.assertRaises(ParseError, f)
Beispiel #20
0
    def test_image_simple_alpha_fail(self):
        parser = RasterisedDocumentParser(None)

        def f():
            parser.parse(os.path.join(self.SAMPLE_FILES, "simple-alpha.png"), "image/png")

        self.assertRaises(ParseError, f)
Beispiel #21
0
    def test_image_dpi_fail(self, m):
        m.return_value = None
        parser = RasterisedDocumentParser(None)

        def f():
            parser.parse(os.path.join(self.SAMPLE_FILES, "simple-no-dpi.png"), "image/png")

        self.assertRaises(ParseError, f)
Beispiel #22
0
    def test_ocrmypdf_parameters(self):
        parser = RasterisedDocumentParser(None)
        params = parser.construct_ocrmypdf_parameters(
            input_file="input.pdf",
            output_file="output.pdf",
            sidecar_file="sidecar.txt",
            mime_type="application/pdf",
            safe_fallback=False)

        self.assertEqual(params['input_file'], "input.pdf")
        self.assertEqual(params['output_file'], "output.pdf")
        self.assertEqual(params['sidecar'], "sidecar.txt")

        with override_settings(OCR_CLEAN="none"):
            params = parser.construct_ocrmypdf_parameters("", "", "", "")
            self.assertNotIn("clean", params)
            self.assertNotIn("clean_final", params)

        with override_settings(OCR_CLEAN="clean"):
            params = parser.construct_ocrmypdf_parameters("", "", "", "")
            self.assertTrue(params['clean'])
            self.assertNotIn("clean_final", params)

        with override_settings(OCR_CLEAN="clean-final", OCR_MODE="skip"):
            params = parser.construct_ocrmypdf_parameters("", "", "", "")
            self.assertTrue(params['clean_final'])
            self.assertNotIn("clean", params)

        with override_settings(OCR_CLEAN="clean-final", OCR_MODE="redo"):
            params = parser.construct_ocrmypdf_parameters("", "", "", "")
            self.assertTrue(params['clean'])
            self.assertNotIn("clean_final", params)

        with override_settings(OCR_DESKEW=True, OCR_MODE="skip"):
            params = parser.construct_ocrmypdf_parameters("", "", "", "")
            self.assertTrue(params['deskew'])

        with override_settings(OCR_DESKEW=True, OCR_MODE="redo"):
            params = parser.construct_ocrmypdf_parameters("", "", "", "")
            self.assertNotIn('deskew', params)

        with override_settings(OCR_DESKEW=False, OCR_MODE="skip"):
            params = parser.construct_ocrmypdf_parameters("", "", "", "")
            self.assertNotIn('deskew', params)
Beispiel #23
0
 def test_multi_page_analog_pages_force(self):
     parser = RasterisedDocumentParser(None)
     parser.parse(os.path.join(self.SAMPLE_FILES, "multi-page-images.pdf"), "application/pdf")
     self.assertTrue(os.path.isfile(parser.archive_path))
     self.assertContainsStrings(parser.get_text().lower(), ["page 1"])
     self.assertFalse("page 2" in parser.get_text().lower())
     self.assertFalse("page 3" in parser.get_text().lower())
Beispiel #24
0
 def test_thumbnail(self):
     parser = RasterisedDocumentParser(uuid.uuid4())
     parser.get_thumbnail(os.path.join(self.SAMPLE_FILES, 'simple-digital.pdf'), "application/pdf")
Beispiel #25
0
    def test_get_text_from_pdf(self):
        parser = RasterisedDocumentParser(uuid.uuid4())
        text = parser.extract_text(None, os.path.join(self.SAMPLE_FILES, 'simple-digital.pdf'))

        self.assertContainsStrings(text.strip(), ["This is a test document."])
Beispiel #26
0
 def test_tiff(self):
     parser = RasterisedDocumentParser(None)
     parser.parse(os.path.join(self.SAMPLE_FILES, "simple.tif"), "image/tiff")
     self.assertTrue(os.path.isfile(parser.archive_path))
     self.assertTrue("this is a test document" in parser.get_text().lower())
Beispiel #27
0
 def test_thumbnail(self):
     parser = RasterisedDocumentParser(
         os.path.join(self.SAMPLE_FILES, 'simple.pdf'), uuid.uuid4())
     parser.get_thumbnail()
Beispiel #28
0
 def test_thumbnail_encrypted(self):
     parser = RasterisedDocumentParser(uuid.uuid4())
     thumb = parser.get_thumbnail(
         os.path.join(self.SAMPLE_FILES, 'encrypted.pdf'),
         "application/pdf")
     self.assertTrue(os.path.isfile(thumb))