hiroi-sora / Umi-OCR

OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。
MIT License
22.96k stars 2.34k forks source link

批量文档时,允许限定仅识别部分页面范围,其他页跳过。因为有时候只要前面几页文本有用,其他页面的想忽略之,以节省时间 #538

Open lforlgg opened 1 month ago

lforlgg commented 1 month ago

✅批量文档时,允许限定只识别某几页(比如p5-20页),其他的不再识别跳过即可。 原因:对于几百页的文档,想要文本化的可能就那一部分。 或者有些明确知道是景物人物照片的页面无文字,就没必要让它花时间。所以允许限定识别页数范围,感觉是个好选项。 ✅关于识别后文件名:对于这种情形,也允许自定义识别后文件名可以相应注明如“layered(p5-20)”或者“layered(all page)” 多谢!❤

hiroi-sora commented 1 month ago

允许限定只识别某几页(比如p5-20页)

这是一直都支持的功能哦。点击文档的文件名,进入预览窗口,左侧可以修改OCR范围和忽略区域的应用范围。

image

明确知道是景物人物照片的页面无文字,就没必要让它花时间

不用担心。如果图片中无文字,那么识别速度会很快的。OCR引擎本身会检测图片中是否存在文字,如果不存在,则不执行耗时最长的rec流程。

关于识别后文件名:对于这种情形,也允许自定义识别后文件名可以相应注明如“layered(p5-20)”或者“layered(all page)”

善,已加。

image

lforlgg commented 1 month ago

允许限定只识别某几页(比如p5-20页)

这是一直都支持的功能哦。点击文档的文件名,进入预览窗口,左侧可以修改OCR范围和忽略区域的应用范围。 原来还有这么好的界面啊。 这个组件已经可以独立为一个批量pdf浏览器了。再加两个按钮。页面显示界面可以拉宽到最大。 我感觉了一下,翻页显示效率很高,很实用了。😁

这种像看图片一样方便,批量浏览pdf的工具国内外几乎没有看到有出现。 现存那些顶多只能看个封面的不算。 举例:我要固定在pdf的快速看某些页(随机分布在p3~p20某个范围),看到需要的页面就保存一下,有这个就太方便了。 没有这个之前都需要逐个打开,一个一个翻开。

🙏🏼请求大佬,把这组件独立出来,单独做一个这样的pdf管理器工具。😍

batchPDFview1_ziped

batchPDFview2_ziped

❤批量pdf浏览管理器❤

✅当前浏览条目加亮 ✅标题为当前文件的名字 ✅可以固定每个pdf的起始浏览页(比如第3页开始) ✅看到喜欢的页可以点一下抽为图片保存起来(名字自动为:从xx文件名(p3).jpg)

lforlgg commented 1 month ago

允许限定只识别某几页(比如p5-20页)

这是一直都支持的功能哦。点击文档的文件名,进入预览窗口,左侧可以修改OCR范围和忽略区域的应用范围。

已经看到局部更新马上立马跟进。 ✅关于%range。如果设定过部分页面%range=p3-p20,如果没设定过范围。%range参数忽略或者=All(既然没设定过,这样不用留心去人工对比是否漏页) 很赞,比想象的还周到! 进一步想法: 😍单独设定过的页码范围在列表中显亮,以示区分。设置多个的话,如果页数跟总页数接近,有时候忘了刚才弄到哪了。 😍提供一个按钮“应用到全部”应用到列表中所有文档。

这个的确很好!🙏🏼

独立出来成为一个pdf快速浏览器,这想法强烈希望大佬考虑下。市面上没有这类pdf浏览工具。曾经专门搜索了很久。

hiroi-sora commented 1 month ago

把这组件独立出来,单独做一个这样的pdf管理器工具

工程量较大,后续考虑下

单独设定过的页码范围在列表中显亮,以示区分

设置颜色有点麻烦,我想了想,改成这样:

image

提供一个按钮“应用到全部”应用到列表中所有文档

代码上写起来有点麻烦,下下个版本再考虑,我准备先发个新版本

lforlgg commented 1 month ago

把这组件独立出来,单独做一个这样的pdf管理器工具

工程量较大,后续考虑下

单独设定过的页码范围在列表中显亮,以示区分

设置颜色有点麻烦,我想了想,改成这样:

  • ”范围“ 栏改为 ”页数“
  • 如果用户没有设定OCR范围,则该栏显示 总页数
  • 如果设定了范围,则显示范围

image

提供一个按钮“应用到全部”应用到列表中所有文档

代码上写起来有点麻烦,下下个版本再考虑,我准备先发个新版本

❤思路经大佬一整理,马上有更简洁的实现方式。 爱了,感谢感谢!

zxhd863943427 commented 2 weeks ago

请问一下,现在设置了范围后输出就只有范围中的页数了,比如说设定为ocr 1-20 页,输出的pdf就只有1-20页。这是预期的结果吗?如果是的话,我还是比较喜欢原来设定 ocr 范围后,只是 ocr 指定范围后,把原内容一并输出,谢谢了!

hiroi-sora commented 2 weeks ago

现在设置了范围后输出就只有范围中的页数了,比如说设定为ocr 1-20 页,输出的pdf就只有1-20页。这是预期的结果吗?

是的,这是预期结果。假如原文件有100页,设定识别范围 20\~40 ,那么新生成的PDF文件只有 20 页,内容为原文件的 P20\~P40 。

我还是比较喜欢设定 ocr 范围后,只是 ocr 指定范围后,把原内容一并输出

当然,简单修改一下代码就能实现此功能。

假设你想实现:原文件有100页,设定识别范围 20\~40 。新生成的PDF文件依然有100页,其中 P20\~P40 有OCR结果,其余页数保留原文件的样子。

  1. 用编辑器打开 UmiOCR-data\py_src\ocr\output\output_pdf_layered.py
  2. 第125行左右,def onEnd(self) 函数中,删掉以下几行:
        # 删除未处理的页数
        for i in range(len(self.pdf) - 1, -1, -1):
            if i not in self.existentPages:
                self.pdf.delete_page(i)
  1. 保存文件,重启 Umi-OCR 。保存为 双层可搜索PDF 时,就能实现你的需求。

image