Tesseract hocr и txt одновременно, или преобразование из Tesseracts hocr в txt
Я играл с Linux OCR, и мне очень нравится Tesseract, особенно в сочетании с gsan2pdf. Tesseract v3 или более поздней версии поддерживает вывод в формате hocr, и gscan2pdf может использовать его для создания отсканированных документов PDF с возможностью поиска.
Иногда, однако, я также хотел бы получить и текстовую версию. pdftotext в доступном для поиска pdf, сгенерированном gscan2pdf, как описано выше, не так хорош для этого, так как даже с параметром -raw компоновка вывода плохо копирует исходный физический макет. Я могу настроить пользовательскую команду в gscan2pdf, которая будет вызывать tesseract для исходного отсканированного изображения без опции hocr, так что генерируется только простой текст, однако ocr оказывается довольно трудоемким, чтобы сделать это дважды для каждой страницы. Разве не существует рабочего способа преобразования из hocr в обычный текст (с той же компоновкой, что и схема, сгенерированная tesseract при вызове без опции hocr) или способа заставить tesseract одновременно выводить и простой текст, и hocr?
https://github.com/jbrinley/HocrConverter выглядит многообещающе, но для меня это не работает.
1 ответ
<?php
/**
* Cli process that gets as 1st argument the output of tesseract ... hocr and dumps
* its text nodes
* Usage: script.php in.tif.html out.txt
*/
$inFile = $argv[1];
$outFile = $argv[2];
$stream = file_get_contents($inFile);
$dom = DOMDocument::loadHTML($stream);
$out = array();
foreach ($dom->getElementsByTagName('p') as $tag) {
$out[] = $tag->nodeValue;
}
file_put_contents($outFile, implode("\n", $out));