【问题标题】:Remove extra whitespaces from extracted PDF text从提取的 PDF 文本中删除多余的空格
【发布时间】:2018-04-09 00:21:12
【问题描述】:

我从一个 PDF 文件中提取了文本,其中一些文本在单词之间有多余的空格。

您的水和废水量

我写了一个函数来删除上面文本中多余的空格。

function removeExtraWhitespace($val) {
    $nval = "";

    for($i = 0; $i < strlen($val); $i++) {
        if($val[$i] != " ") {
            $nval .= $val[$i];
        }
        else if((isset($val[$i-2]) && $val[$i-2] != " ") || (isset($val[$i+2]) && $val[$i+2] != " ")) {
            $nval .= $val[$i];
        }
    }
    return $nval;
}

将输出:

您的水和废水声明

我知道这个功能不会在所有情况下都有效。如果文本有一个有效的 1 字母单词,例如 'a',那么它将失败,或者如果只有部分单词有多余的空格。

我需要删除字符串中的空格

将上述文本放入我的函数时,它将输出:

需要从字符串中删除空格

有没有一种方法可以使函数适用于所有可能的文本?

【问题讨论】:

  • 在这个字符串中没有唯一标识来删除空格。如果第一个字母是每个单词的大写,那么它是可能的
  • 我会考虑将文本段落(如逐句)传递给自动更正 API 服务。也许有谷歌助手 API 之类的。像这样。
  • 也许还需要付出更多的努力:我想,关于您的文本示例,PDF 看起来还不错?那么也许您的解析库或您使用的任何东西都不够好或必须以其他方式使用?
  • @iquellis 我尝试了几种从 PDF 中提取文本的方法。示例文本来自使用 ebook-convert,到目前为止,它为我解析产生了最好的结果。
  • @Gary:很好,只是想确定一下,您尝试了不止一种方法...

标签: php pdf


【解决方案1】:

拼写纠正是一项艰巨的工作。我认为您应该使用在线拼写纠正网站。你可以这样做:

function curl($post)
{
    $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://orthographe.reverso.net/RISpellerWS/RestSpeller.svc/v1/CheckSpellingAsXml/language=eng?outputFormat=json&doReplacements=false&interfLang=en&dictionary=both&spellOrigin=interactive&includeSpellCheckUnits=true&includeExtraInfo=true&isStandaloneSpeller=true');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Created: 01/01/0001 00:00:00',
        'Referer: http://www.reverso.net/spell-checker/english-spelling-grammar/',
        'Username: OnlineSpellerWS'
    ));
    $icerik = curl_exec($ch);
    curl_close($ch);
    return $icerik;
}


$response   = json_decode(curl('Ineed to remove whitespaces froma string'));

var_dump($response->AutoCorrectedText);

仅供参考。我确信有提供 API 的拼写纠正网站。

【讨论】:

    猜你喜欢
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2023-01-16
    • 2019-03-03
    • 2011-08-05
    相关资源
    最近更新 更多