V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
youthfire
V2EX  ›  Python

ocr 时,怎么才能让终端不输出 libpng warning: iCCP: profile 'ICC Profile': 'RGB ': RGB color space not permitted on grayscale PNG

  •  
  •   youthfire · 2022-06-11 02:05:46 +08:00 · 1702 次点击
    这是一个创建于 900 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各位 v 友,我所了解到,默认的截图保存格式都是 PNG 为主,为了提高 ocr 的识别精度,又会作灰度处理

    但无论是 paddleocr 还是 easyocr ,识别过程中都会在终端输出这句: libpng warning: iCCP: profile ‘ICC Profile’: ‘RGB ‘: RGB color space not permitted on grayscale PNG

    通过搜索,了解到这是 libpng1.6 以后开始的提示,似乎对 grayscale PNG 都有这个提示,实际 ocr 不影响。但一番搜索找不到没有任何参数开关可以 ignore 这部分输出。

    暂时查到的解决方案

    1.是通过 ImageMagick remove ICCP chunk 。mogrify *.png
    2. 放弃 png ,采用 jpg

    这两种操作,似乎都会额外增加开销,(比如处理时间,比如额外的空间)实际上我需要的只是希望在 mac 的 terminal 输出我的 ocr 结果同时,不要看到这句提示,保持干净。有正确方法吗?先谢谢大家
    第 1 条附言  ·  2022-06-11 19:45:00 +08:00
    暂时我把截图操作的格式默认为 jpg 了,大小也差不多,肉眼看上去清晰度也区别不明显
    3 条回复    2022-06-11 19:44:25 +08:00
    Tink
        1
    Tink  
       2022-06-11 08:29:27 +08:00 via Android
    如果实在 ignore 不了,外面再套一个脚本,过滤一下
    ysc3839
        2
    ysc3839  
       2022-06-11 09:27:36 +08:00 via Android
    可以用 png_set_error_fn 把输出 warning 的函数换掉,但是要能拿到 png_ptr
    youthfire
        3
    youthfire  
    OP
       2022-06-11 19:44:25 +08:00
    @Tink @ysc3839 感谢两位朋友热心解答,能力有限,提供的建议不会操作,暂时我把截图操作的格式默认为 jpg 了,大小也差不多,肉眼看上去清晰度也区别不明显,避免 png 的这个问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3124 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:16 · PVG 22:16 · LAX 06:16 · JFK 09:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.