opencv改善pdf清晰度

编程入门 行业动态 更新时间:2024-10-11 21:30:11

opencv改善pdf<a href=https://www.elefans.com/category/jswz/34/1730078.html style=清晰度"/>

opencv改善pdf清晰度

improve-pdf

介绍:

使用python脚本对pdf进行优化,提高pdf清晰度,使文字更加清晰,观感更佳。仅适用黑白扫描版pdf,且文字较清晰,若模糊会更加模糊。

原理:

pdf转成png图片
再使用opencv对图片局部阈值二值化处理
并去除孤立噪点,优化图片观感
最后转回pdf并合并,最终达到优化提高pdf清晰度的目的
(可选)使用potrace处理png转成svg矢量图,使文字线条平滑,观感大幅度提高,接近ocr pdf 。

脚本使用方法:

1.安装依赖

pip install opencv-python
pip install pymupdf

2.将pdf文件放入文件夹中,将doc_path改为pdf文件路径(不要使用中文路径,会报错)

doc_path = r"your pdf path"  # 相对路径删去r

3.运行脚本

推荐使用单任务多进程,默认满核运行处理速度更快,可自行修改,注意进程数不要超过cpu核心数

4.核心代码

        def change_image(self, index):try:img_files = sorted(os.listdir(self.img_path), key=self.numerical_sort)for i in index:i = img_files[i]if i.endswith(".png"):img = cv2.imread(os.path.join(self.img_path, i), cv2.IMREAD_COLOR)GrayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)binary2 = cv2.adaptiveThreshold(GrayImage,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,55,15,)cv2.imwrite(os.path.join(self.change_path, i), binary2)print(f"正在二值化第{i}张图片")except Exception as e:print(f"二值化图片时出现错误: {e}")def erasure_image(self, threshold, index):try:img_files = sorted(os.listdir(self.change_path), key=self.numerical_sort)for i in index:i = img_files[i]if i.endswith(".png"):img = cv2.imread(os.path.join(self.change_path, i), cv2.IMREAD_COLOR)GrayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)contours, hierarch = cv2.findContours(GrayImage, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)for j in range(len(contours)):area = cv2.contourArea(contours[j])if area < threshold:cv2.drawContours(img, [contours[j]], -1, (255, 255, 255), thickness=-1)continuecv2.imwrite(os.path.join(self.erasure_path, i),img,[cv2.IMWRITE_PNG_COMPRESSION, 9],)print(f"正在去除第{i}张图片黑点")except Exception as e:print(f"去除黑点时出现错误: {e}")

效果展示

 

 

更多推荐

opencv改善pdf清晰度

本文发布于:2023-12-07 08:50:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1670739.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:清晰度   opencv   pdf

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!