This is a cv but it looks blurry bcz i took screenshots of the pages. I want you convert this into hd so it looks good. It feels bad quality. Make whole cv hd quality. Don't change anything else
mkdir -p /tmp/workspace/cv-hd && cd /tmp/workspace/cv-hd && cp /tmp/workspace/attachments/a1c76e2a-c0de-453c-beda-d6b7b02f5c94/1000538129.pdf . && python3 -c " import pypdf r = pypdf.PdfReader('1000538129.pdf') print('pages', len(r.pages)) for i,p in enumerate(r.pages): print(i, p.mediabox) imgs = p.images for img in imgs: print(' img', img.name, img.image.size if img.image else None) "
cd /tmp/workspace/cv-hd && python3 -c " import PIL print('PIL', PIL.__version__) try: import cv2 print('cv2 ok', cv2.__version__) except Exception as e: print('no cv2', e) try: import numpy print('numpy ok') except Exception as e: print(e) try: import skimage print('skimage ok') except Exception as e: print('no skimage', e) " pip list 2>/dev/null | grep -i -E "esrgan|super|torch|onnx"
cd /tmp/workspace/cv-hd && curl -s -m 5 -o /dev/null -w "%{http_code}\n" https://github.com || echo "NOFAIL"
cd /tmp/workspace/cv-hd && mkdir -p models && \ curl -sL -m 30 -o models/FSRCNN_x4.pb https://github.com/Saafke/FSRCNN_Tensorflow/raw/master/models/FSRCNN_x4.pb && \ ls -la models/ && python3 -c " import cv2 sr = cv2.dnn_superres.DnnSuperResImpl_create() sr.readModel('models/FSRCNN_x4.pb') sr.setModel('fsrcnn', 4) print('loaded ok') "
pip install --user -q opencv-contrib-python-headless 2>&1 | tail -20
cd /tmp/workspace/cv-hd && pip install --quiet --target=/tmp/workspace/cv-hd/pylibs opencv-contrib-python-headless 2>&1 | tail -20
cd /tmp/workspace/cv-hd && PYTHONPATH=/tmp/workspace/cv-hd/pylibs python3 -c " import sys sys.path.insert(0, '/tmp/workspace/cv-hd/pylibs') import cv2 print(cv2.__file__) print(hasattr(cv2, 'dnn_superres')) sr = cv2.dnn_superres.DnnSuperResImpl_create() sr.readModel('models/FSRCNN_x4.pb') sr.setModel('fsrcnn', 4) print('loaded ok') "
cd /tmp/workspace/cv-hd && mkdir -p extracted upscaled && PYTHONPATH=/tmp/workspace/cv-hd/pylibs python3 -c " import pypdf r = pypdf.PdfReader('1000538129.pdf') for i,p in enumerate(r.pages): for img in p.images: data = img.image out = f'extracted/page_{i+1}.png' data.save(out) print(out, data.size, data.mode) "
cd /tmp/workspace/cv-hd && PYTHONPATH=/tmp/workspace/cv-hd/pylibs python3 -c " import sys sys.path.insert(0,'/tmp/workspace/cv-hd/pylibs') import cv2, numpy as np from PIL import Image, ImageFilter, ImageEnhance import time sr = cv2.dnn_superres.DnnSuperResImpl_create() sr.readModel('models/FSRCNN_x4.pb') sr.setModel('fsrcnn', 4) for i in range(1,4): t0=time.time() path = f'extracted/page_{i}.png' img = cv2.imread(path) # BGR # mild denoise to reduce screenshot/jpeg block noise before upscaling den = cv2.fastNlMeansDenoisingColored(img, None, 3, 3, 7, 21) up = sr.upsample(den) # 4x upscale via FSRCNN print(i, 'orig', img.shape, 'upscaled', up.shape, 'time', round(time.time()-t0,1)) cv2.imwrite(f'upscaled/page_{i}_sr.png', up) "
cd /tmp/workspace/cv-hd && PYTHONPATH=/tmp/workspace/cv-hd/pylibs python3 -c " import sys sys.path.insert(0,'/tmp/workspace/cv-hd/pylibs') import cv2, numpy as np from PIL import Image, ImageFilter # Target: A4 page 595x842 pt -> at 300 dpi: 595/72*300=2479.2, 842/72*300=3508.3 TARGET_W, TARGET_H = 2480, 3508 for i in range(1,4): up = cv2.imread(f'upscaled/page_{i}_sr.png') h, w = up.shape[:2] # resize down to target while preserving aspect (page aspect differs slightly per page due to crop, but keep as-is) resized = cv2.resize(up, (TARGET_W, int(TARGET_W*h/w)) if w>=h else (int(TARGET_H*w/h), TARGET_H), interpolation=cv2.INTER_LANCZOS4) # convert to RGB PIL for unsharp mask rgb = cv2.cvtColor(resized, cv2.COLOR_BGR2RGB) pil = Image.fromarray(rgb) pil = pil.filter(ImageFilter.UnsharpMask(radius=1.5, percent=60, threshold=2)) out = f'upscaled/page_{i}_final.jpg' pil.save(out, 'JPEG', quality=92, dpi=(300,300)) print(i, pil.size, 'saved', out) " ls -la /tmp/workspace/cv-hd/upscaled/*final.jpg
cd /tmp/workspace/cv-hd && python3 -c " from reportlab.pdfgen import canvas from reportlab.lib.utils import ImageReader import pypdf # get original page sizes to preserve exactly r = pypdf.PdfReader('1000538129.pdf') sizes = [(float(p.mediabox.width), float(p.mediabox.height)) for p in r.pages] print(sizes) c = canvas.Canvas('CV_HD.pdf') for i in range(1,4): w,h = sizes[i-1] c.setPageSize((w,h)) img = ImageReader(f'upscaled/page_{i}_final.jpg') c.drawImage(img, 0, 0, width=w, height=h) c.showPage() c.save() print('done') " ls -la /tmp/workspace/cv-hd/CV_HD.pdf
cd /tmp/workspace/cv-hd && python3 -c " import pypdf r = pypdf.PdfReader('CV_HD.pdf') print('pages', len(r.pages)) for i,p in enumerate(r.pages): for img in p.images: print(i, img.image.size) "
cd /tmp/workspace/cv-hd && python3 -c " from PIL import Image orig = Image.open('extracted/page_1.png') new = Image.open('upscaled/page_1_final.jpg') # crop top-left quarter for comparison at same relative region, resize orig crop up to compare ow,oh = orig.size nw,nh = new.size oc = orig.crop((0,0, ow//3, oh//4)) oc = oc.resize((oc.width*3, oc.height*3), Image.LANCZOS) oc.save('compare_orig_crop.png') nc = new.crop((0,0, nw//3, nh//4)) nc.save('compare_new_crop.png') print(oc.size, nc.size) "
cd /tmp/workspace/cv-hd && rm -rf upscaled/page_*_sr.png compare_*.png pylibs models extracted ls -la /tmp/workspace/cv-hd/ du -h /tmp/workspace/cv-hd/CV_HD.pdf
CV HD
PDF Document · PDF
Quick answer
CV HD
PDF Document · PDF