2015-06-24 16 views
9

Poszukuję narzędzia lub pomysłu do implementacji w Pythonie, który konwertuje plik hOCR (generowany przez tesseract w aplikacji) do tabeli html. Chodzi o to, aby wykorzystać informacje o lokalizacji tekstowej w pliku hOCR (podane w atrybucie bbox), aby utworzyć tabelę na podstawie podanej lokalizacji. Podam przykład wyjaśnia powyższy pomysł:Konwersja hOCR do tabeli HTML

Użyłem tego image z SlideShare.net jako dane wejściowe do mojej aplikacji, które wykorzystują tesseract i otrzymałem poniżej plik hOCR/xml jako wynik.

hOCR file:

<div class='ocr_page' id='page_2' title='image "sample_slide.jpg"; bbox 0 0 638 479; ppageno 1'> 
    <div class='ocr_carea' id='block_1_1' title="bbox 0 0 638 479"> 
    <p class='ocr_par' dir='ltr' id='par_1' title="bbox 31 104 620 439"> 
    <span class='ocr_line' id='line_1' title="bbox 32 104 613 138"><span class='ocrx_word' id='word_1' title="bbox 32 105 119 131">done:</span> <span class='ocrx_word' id='word_2' title="bbox 132 104 262 138">working</span> <span class='ocrx_word' id='word_3' title="bbox 273 105 405 138">product,</span> <span class='ocrx_word' id='word_4' title="bbox 419 104 517 132">hotels</span> <span class='ocrx_word' id='word_5' title="bbox 528 104 613 132">listed</span> 
    </span> 
    <span class='ocr_line' id='line_2' title="bbox 31 160 471 194"><span class='ocrx_word' id='word_6' title="bbox 31 164 62 187">to</span> <span class='ocrx_word' id='word_7' title="bbox 75 161 122 187">do:</span> <span class='ocrx_word' id='word_8' title="bbox 134 164 227 187">smart</span> <span class='ocrx_word' id='word_9' title="bbox 236 160 330 187">traffic</span> <span class='ocrx_word' id='word_10' title="bbox 342 160 471 194">building</span> 
    </span> 
    <span class='ocr_line' id='line_3' title="bbox 32 243 284 280"><span class='ocrx_word' id='word_11' title="bbox 32 243 128 280">seed</span> <span class='ocrx_word' id='word_12' title="bbox 148 243 284 280">round:</span> 
    </span> 
    <span class='ocr_line' id='line_4' title="bbox 71 316 619 361"><span class='ocrx_word' id='word_13' title="bbox 71 321 156 356">CEO</span> <span class='ocrx_word' id='word_14' title="bbox 171 319 240 355">will</span> <span class='ocrx_word' id='word_15' title="bbox 260 321 384 356">invest</span> <span class='ocrx_word' id='word_16' title="bbox 517 316 619 361">$30k</span> 
    </span> 
    <span class='ocr_line' id='line_5' title="bbox 75 392 620 439"><span class='ocrx_word' id='word_17' title="bbox 75 397 252 433">investor</span> <span class='ocrx_word' id='word_18' title="bbox 489 392 620 439">$120k</span> 
    </span> 
    </p> 
    </div> 
    </div> 

Co potrzebne jest, aby przekonwertować plik hOCR HTML tabeli w zależności od lokalizacji następnego. Planowana tabela powinna wyglądać jak this table.

Rozmiar i położenie komórek tabeli odzwierciedlają informacje zawarte w pliku hOCR.

źródło zdjęcia: slideshare.net

+0

https://github.com/ultrasaurus/hocr-javascript – RAVI

Odpowiedz

1

Sprawdź this document. Uważam, że opisuje wiele (lub wszystkie) tego, czego potrzebujesz. Ze wstępu:

Ten dokument opisuje przedstawienie różnych aspektów OCR wyjścia w formacie XML-podobne. Oznacza to, że definiujemy jako zestaw znaczników zawierający tekst i inne znaczniki, wraz z atrybutami tych znaczników . Ponieważ jednak treść, którą reprezentujemy, jest sformatowana w formacie , jednak w rzeczywistości nie używamy nowego kodu XML dla reprezentacji ; zamiast tego umieszczaj reprezentację w XHTML (lub HTML) , ponieważ przetwarzanie XHTML i XHTML już definiuje wiele aspektów reprezentacji wyjścia OCR , które w przeciwnym razie wymagałyby dodatkowych, oddzielnych definicji i ad-hoc.

Kod XML może również być converted to HTML using XSLT. W rzeczywistości jest a project which plans to do just that.

Pomocne może być również this project (hocr-tools).

wreszcie pamiętać, że FAQ of Tesseract wspomina o tym:

Przy pomocy configfile 'hocr' tesseract będzie produkować wyjście xhtml zgodnego z hocr specyfikacji

+0

Dziękuję jcoppens za odpowiedź. W rzeczywistości dokument i narzędzie nie zapewniają tego, czego szukam. Zdefiniowali standardy i formaty hOCR, nie wspominając o tym, jak prezentować dane wyjściowe jako tabelę html. Narzędzia te są przydatne w niektórych zadaniach, ale znowu nie zapewniają możliwości uzyskania potrzebnego wyniku. Dzięki jeszcze raz. –

+0

XHTML nie jest odpowiedni? Jak opisano w FAQ? Ponadto w specyfikacji występuje odwołanie do XSL. XSLT to narzędzie do konwersji XML i może być używane do tworzenia HTML (Dodano odniesienie do powyższej odpowiedzi) – jcoppens

0

Oto pomysł jak konwertować hocr plik z niektórymi istniejącymi narzędziami do tabeli (także może być za późno na oryginalne pytanie):

  1. Take plik hocr razem z plikiem obrazu i tworzenie PDF z hocr-pdf z repo hocr-tools zobaczyć https://github.com/tmbdev/hocr-tools#hocr-pdf
  2. Zastosowanie tabula https://github.com/tabulapdf/tabula wyodrębnić dane z tabeli z pdf
  3. Konwersja danych CSV do tabeli HTML (nie powinno być wiele narzędzi do tego zadania)

Pierwszy krok jest potrzebny tylko dlatego, że tabula działa tylko z plikami pdf. Drugim krokiem jest to, że IMO jest głównym wyzwaniem do wydobywania danych z tabeli z informacji wizualnych, a także może być interesujące sprawdzanie szczegółów tam, kiedy chcesz uzyskać pewne pomysły na temat podejścia algorytmicznego.