【问题标题】:Is there a way to disable OCR mode in Tika without uninstalling tesseract有没有办法在不卸载 tesseract 的情况下禁用 Tika 中的 OCR 模式
【发布时间】:2019-05-21 06:56:50
【问题描述】:

我正在为我的项目使用 tika-app jar,有没有办法在 tika 中禁用 tesseract OCR。有两件事必须保持原样:

1.tesseract无法卸载

2.tika.xml 无法编辑,因为 tika-app.jar 是现成使用的

有没有办法在 java 代码中通过设置上下文或解析器属性来禁用 OCR 来设置配置?

我尝试了以下代码,但 OCR 在解析时仍然从图像文件中提取文本。

            PDFParserConfig pdfConfig = new PDFParserConfig();
            pdfConfig.setOcrStrategy(OCR_STRATEGY.NO_OCR);
            context.set(PDFParserConfig.class, pdfConfig);```

【问题讨论】:

  • Tika App 很乐意接受作为命令行参数传递的 Tika Config xml 文件,为什么不这样做呢?
  • Tika 应用程序用作外部库文件,并以这种方式配置。是否可以通过java代码设置?
  • 当然!只需使用您自己的设置创建一个 TikaConfig 对象,然后将其传递给您正在使用的 Tika 代码
  • @Gagravarr 我在TikaConfig 上没有看到任何与 ocr 相关的选项,那该怎么做?

标签: java ocr tesseract apache-tika


【解决方案1】:
<?xml version="1.0" encoding="UTF-8"?>
<properties>
    <parsers>
        <parser class="org.apache.tika.parser.DefaultParser">
       <parser-exclude class="org.apache.tika.parser.ocr.TesseractOCRParser"/>
        </parser>
    </parsers>
</properties>

【讨论】:

  • OP要求在java代码中设置配置
  • 您可以通过将环境属性 tika.config 设置为配置文件的名称来让 Tika 找到它,如果它不在 Tika 正在寻找它的位置之一,似乎完整路径应该帮助。这样您甚至不必更改代码。
【解决方案2】:

我更喜欢使用 java 来执行此操作,因为它与默认配置的唯一区别是删除了 OCR;我不确定 XML 配置是否相同:

TikaConfig defaultConfig = TikaConfig.getDefaultConfig();
CompositeParser compositeParser = (CompositeParser) defaultConfig.getParser();
Map<MediaType, Parser> parsers = compositeParser.getParsers();
parsers.values().removeIf(parser -> parser instanceof TesseractOCRParser);
compositeParser.setParsers(parsers);
Tika TIKA = new Tika(defaultConfig);

【讨论】:

    猜你喜欢
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2010-09-24
    • 2021-04-15
    相关资源
    最近更新 更多