首页 > 解决方案 > 如何更改 tesseract 配置以识别§并在 R 中使用 pdftools::pdf_ocr_text 应用?

问题描述

pdftools在 R 中使用从扫描的和基于文本的 PDF 文件中提取文本。一个问题是§性格。tesseract 无法识别这一点。

我查看了以下链接: CRAN tesseract package vignette

类似问题的SO链接

和这个 github 页面

我尝试了以下方法:

  1. 我找到了配置文件,tesseract_info()digitsconfigs. digits文件内容是这样的:

    tessedit_char_whitelist 0123456789.

编辑后看起来像这样:

tessedit_char_whitelist 0123456789-$§.

这根本没有改变任何东西,我仍然无法提取§. 它们仍然显示为8.

  1. 第一步失败后,我尝试了以下操作:

    filepng <- pdftools::pdf_convert(filePathPDF, dpi = 600)
    
    specs <- tesseract("deu", options = list(tessedit_char_whitelist = "1234567890-.,;:qwertzuiopüasdfghjklöäyxcvbnmQWERTZUIOPÜASDFGHJKLÖÄYXCVBNM@߀!$%&§/()=?+"))
    
    text <- tesseract::ocr(filepng, engine = specs)
    
    

这个也失败了。我绝不是 OCR 方面的专家,而 tesseract 在文档方面还有改进的空间。

如何§以正确的方式添加到要识别的字符列表中,以便它适用?

更新

§当我language从参数列表中删除时,以下工作可以识别:

charlist <- tesseract(options = list(tessedit_char_whitelist = " 1234567890-.,;:qwertzuiopüasdfghjklöäyxcvbnmQWERTZUIOPÜASDFGHJKLÖÄYXCVBNM@߀!$%&§/()=?+"))

text <- tesseract::ocr(filepng, engine = charlist)

但这一次,我失去了德语变音符号。我不知道如何同时指定语言和 char_whitelist。根据文档,tesseract()接受语言参数和选项参数。但这似乎不起作用。有任何想法吗?

更新: 我尝试在命令行中使用 tesseract(MacOS Catalina 10.15.7)。

我首先将扫描的 PDF 文件转换为图像,然后使用它:

tesseract fileConverted.tiff fileToText

它创建fileToText.txt. 它确实识别§. 所有这些都被正确识别。但是无法正确识别德语变音符号,因为我根本没有指定语言。当我对language参数使用相同的命令时

tesseract fileConverted.tiff fileToText -l deu

德语变音符号被正确识别,但§不是。

我更改的digits配置文件在这里:

/usr/local/Cellar/tesseract/4.1.1/share/tessdata/configs

我的理解是:这不是 R 特有的问题,而是 tesseract 本身发生的。同时设置tessedit_char_whitelist和语言似乎是不可能的,或者我错过了一些可怕的东西。

标签: rocrtesseractpdftools

解决方案


如上所述,tesseract 4 不支持设置白名单。要解决该问题,您可以使用命令行开关。您需要将 OCR 引擎模式设置为“仅限原始 Tesseract”,--oem 0然后用于-c tessedit_char_whitelist=abc...通过命令行直接传递您的白名单。

总的来说,它应该看起来像这样: tesseract fileConverted.tiff fileToText --oem 0 -l deu -c tessedit_char_whitelist=0123456789-$§


推荐阅读