2015-06-24 24 views
9

Tôi đang tìm một công cụ hoặc một ý tưởng được triển khai trong python để chuyển đổi tệp hOCR (được tạo bởi tesseract trong ứng dụng) thành bảng html. Ý tưởng là sử dụng thông tin vị trí văn bản trong tệp hOCR (được cung cấp trong thuộc tính bbox) để tạo bảng dựa trên vị trí được cung cấp. Tôi đang cung cấp một ví dụ giải thích ý tưởng trên:Chuyển đổi bảng hOCR sang HTML

Tôi đã sử dụng số này image từ SlideShare.net làm đầu vào cho ứng dụng sử dụng tesseract và tôi nhận tệp dưới đây là hOCR/xml.

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> 

Những gì tôi cần là để chuyển đổi các tập tin hOCR html bảng dựa trên vị trí của tiếp theo. Bảng dự định sẽ trông giống như this table.

Kích thước và vị trí của ô bảng phản ánh thông tin được cung cấp trong tệp hOCR.

Nguồn hình ảnh: slideshare.net

+0

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

Trả lời

1

Kiểm tra this document. Tôi tin rằng nó mô tả nhiều (hoặc tất cả) những gì bạn cần. Từ phần giới thiệu:

Tài liệu này mô tả một số khía cạnh khác nhau của định dạng giống như OCR . Tức là, chúng tôi xác định tập hợp các thẻ chứa văn bản và các thẻ khác cùng với các thuộc tính của các thẻ đó. Tuy nhiên, vì nội dung chúng tôi đang đại diện được định dạng văn bản, Tuy nhiên, chúng tôi không thực sự sử dụng XML mới cho đại diện ; thay vì nhúng biểu diễn vào XHTML (hoặc HTML) vì xử lý XHTML và XHTML đã xác định nhiều khía cạnh của đại diện đầu ra OCR , nếu không cần thêm các định nghĩa riêng biệt, riêng biệt và ad-hoc.

XML cũng có thể là converted to HTML using XSLT. Trên thực tế, có a project which plans to do just that.

Ngoài ra, this project (hocr-tools) có thể trợ giúp.

Cuối cùng lưu ý FAQ of Tesseract đề cập đến điều này:

Với configfile 'hocr' Tesseract sẽ sản xuất xhtml đầu ra phù hợp với đặc điểm kỹ thuật hocr

+0

Cảm ơn jcoppens cho câu trả lời của bạn. Trong thực tế, tài liệu và công cụ không cung cấp những gì tôi đang tìm kiếm. Họ định nghĩa các tiêu chuẩn và định dạng hOCR mà không đề cập đến cách trình bày đầu ra dưới dạng bảng html. Các công cụ này rất hữu ích cho một số nhiệm vụ nhưng một lần nữa nó không cung cấp cơ sở để tạo ra kết quả mà tôi cần. Cảm ơn một lần nữa. –

+0

XHTML không thích hợp? Như được mô tả trong Câu hỏi thường gặp? Ngoài ra, trong Spec có một tham chiếu đến XSL. XSLT là một công cụ để chuyển đổi XML và có thể được sử dụng để tạo HTML (Đã thêm tham chiếu vào câu trả lời ở trên) – jcoppens

0

Dưới đây là một ý tưởng làm thế nào để chuyển đổi một tập tin hocr với một số công cụ hiện có vào một bảng (cũng có thể là quá muộn đối với câu hỏi ban đầu):

  1. Take file hocr cùng với các tập tin hình ảnh và tạo ra một pdf với hocr-pdf từ hocr-công cụ repo thấy https://github.com/tmbdev/hocr-tools#hocr-pdf
  2. Sử dụng Tabula https://github.com/tabulapdf/tabula để trích xuất các dữ liệu bảng từ pdf
  3. Chuyển đổi dữ liệu CSV để bảng HTML (không nên có nhiều công cụ cho công việc này)

Bước đầu tiên chỉ cần thiết vì tabula chỉ hoạt động với pdf. Bước thứ hai là IMO là thách thức chính để trích xuất dữ liệu bảng từ thông tin trực quan và cũng có thể là điều thú vị để kiểm tra chi tiết ở đó, khi bạn muốn nhận được một số ý tưởng về phương pháp tiếp cận thuật toán.