if lossy: args.append('--jbig2-lossy') check_ocrmypdf(*args, env=spoof_tesseract_noop) pdf = pikepdf.open(outpdf) pim = pikepdf.PdfImage(next(iter(pdf.pages[0].images.values()))) assert pim.filters[0] == '/JBIG2Decode' if lossy: assert '/JBIG2Globals' in pim.decode_parms[0] else: assert len(pim.decode_parms) == 0 @pytest.mark.skipif(not jbig2enc.available() or not pngquant.available(), reason='need jbig2enc and pngquant') def test_flate_to_jbig2(resources, outdir, spoof_tesseract_noop): # This test requires an image that pngquant is capable of converting to # to 1bpp - so use an existing 1bpp image, convert up, confirm it can # convert down im = Image.open(fspath(resources / 'typewriter.png')) assert im.mode in ('1', 'P') im = im.convert('L') im.save(fspath(outdir / 'type8.png')) check_ocrmypdf(outdir / 'type8.png', outdir / 'out.pdf', '--image-dpi', '100', '--png-quality',
args.append('--jbig2-lossy') check_ocrmypdf(*args, env=spoof_tesseract_noop) pdf = pikepdf.open(outpdf) pim = pikepdf.PdfImage(next(iter(pdf.pages[0].images.values()))) assert pim.filters[0] == '/JBIG2Decode' if lossy: assert '/JBIG2Globals' in pim.decode_parms[0] else: assert len(pim.decode_parms) == 0 @pytest.mark.skipif( not jbig2enc.available() or not pngquant.available(), reason='need jbig2enc and pngquant', ) def test_flate_to_jbig2(resources, outdir, spoof_tesseract_noop): # This test requires an image that pngquant is capable of converting to # to 1bpp - so use an existing 1bpp image, convert up, confirm it can # convert down im = Image.open(fspath(resources / 'typewriter.png')) assert im.mode in ('1', 'P') im = im.convert('L') im.save(fspath(outdir / 'type8.png')) check_ocrmypdf( outdir / 'type8.png', outdir / 'out.pdf', '--image-dpi',
args.append('--jbig2-lossy') check_ocrmypdf(*args, env=spoof_tesseract_noop) pdf = pikepdf.open(outpdf) pim = pikepdf.PdfImage(next(iter(pdf.pages[0].images.values()))) assert pim.filters[0] == '/JBIG2Decode' if lossy: assert '/JBIG2Globals' in pim.decode_parms[0] else: assert len(pim.decode_parms) == 0 @pytest.mark.skipif( not jbig2enc.available() or not pngquant.available(), reason='need jbig2enc and pngquant', ) def test_flate_to_jbig2(resources, outdir, spoof_tesseract_noop): # This test requires an image that pngquant is capable of converting to # to 1bpp - so use an existing 1bpp image, convert up, confirm it can # convert down im = Image.open(fspath(resources / 'typewriter.png')) assert im.mode in ('1', 'P') im = im.convert('L') im.save(fspath(outdir / 'type8.png')) check_ocrmypdf( outdir / 'type8.png', outdir / 'out.pdf', '--image-dpi',
opt.main(infile, outdir / 'out.pdf', level=3) rasterize_pdf( outdir / 'out.pdf', outdir / 'im.png', xres=10, yres=10, raster_device='pnggray', log=logging.getLogger(name='test_mono_not_inverted'), ) with Image.open(fspath(outdir / 'im.png')) as im: assert im.getpixel((0, 0)) == 255, "Expected white background" @pytest.mark.skipif(not pngquant.available(), reason='need pngquant') def test_jpg_png_params(resources, outpdf, spoof_tesseract_noop): check_ocrmypdf( resources / 'crom.png', outpdf, '--image-dpi', '200', '--optimize', '3', '--jpg-quality', '50', '--png-quality', '20', env=spoof_tesseract_noop, )