Skip to content

Commit c05e8c8

Browse files
committed
Handle ocr item classes separator and photo
1 parent 4f79862 commit c05e8c8

File tree

6 files changed

+224
-8
lines changed

6 files changed

+224
-8
lines changed

data/icons/item_separator.png

113 Bytes
Loading

data/icons/item_separator.svg

Lines changed: 200 additions & 0 deletions
Loading

gtk/data/gimagereader.gresource.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<file alias="stripcrlf.png">../../data/icons/stripcrlf.png</file>
2929
<file alias="item_block.png">../../data/icons/item_block.png</file>
3030
<file alias="item_halftone.png">../../data/icons/item_halftone.png</file>
31+
<file alias="item_separator.png">../../data/icons/item_separator.png</file>
3132
<file alias="item_line.png">../../data/icons/item_line.png</file>
3233
<file alias="item_page.png">../../data/icons/item_page.png</file>
3334
<file alias="item_par.png">../../data/icons/item_par.png</file>

gtk/src/hocr/HOCRDocument.cc

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -807,8 +807,10 @@ Glib::ustring HOCRDocument::displayRoleForItem(const HOCRItem* item) const {
807807
return _("Textline");
808808
} else if (itemClass == "ocrx_word") {
809809
return item->text();
810-
} else if (itemClass == "ocr_graphic") {
810+
} else if (itemClass == "ocr_graphic" || itemClass == "ocr_photo") {
811811
return _("Graphic");
812+
} else if (itemClass == "ocr_separator") {
813+
return _("Separator");
812814
}
813815
return Glib::ustring();
814816
}
@@ -825,8 +827,10 @@ Glib::RefPtr<Gdk::Pixbuf> HOCRDocument::decorationRoleForItem(const HOCRItem* it
825827
return Gdk::Pixbuf::create_from_resource("/org/gnome/gimagereader/item_line.png");
826828
} else if (itemClass == "ocrx_word") {
827829
return Gdk::Pixbuf::create_from_resource("/org/gnome/gimagereader/item_word.png");
828-
} else if (itemClass == "ocr_graphic") {
830+
} else if (itemClass == "ocr_graphic" || itemClass == "ocr_photo") {
829831
return Gdk::Pixbuf::create_from_resource("/org/gnome/gimagereader/item_halftone.png");
832+
} else if (itemClass == "ocr_separator") {
833+
return Gdk::Pixbuf::create_from_resource("/org/gnome/gimagereader/item_separator.png");
830834
}
831835
auto pixbuf = Gdk::Pixbuf::create(Gdk::COLORSPACE_RGB, false, 8, 16, 16);
832836
pixbuf->fill(255);
@@ -1097,7 +1101,7 @@ void HOCRItem::setAttribute(const Glib::ustring& name, const Glib::ustring& valu
10971101
Glib::ustring HOCRItem::toHtml(int indent) const {
10981102
Glib::ustring cls = itemClass();
10991103
Glib::ustring tag;
1100-
if (cls == "ocr_page" || cls == "ocr_carea" || cls == "ocr_graphic") {
1104+
if (cls == "ocr_page" || cls == "ocr_carea" || cls == "ocr_graphic" || cls == "ocr_photo" || cls == "ocr_separator") {
11011105
tag = "div";
11021106
} else if (cls == "ocr_par") {
11031107
tag = "p";
@@ -1221,7 +1225,10 @@ HOCRPage::HOCRPage(const xmlpp::Element* element, int pageId, const Glib::ustrin
12211225
delete m_childItems.back();
12221226
m_childItems.pop_back();
12231227
} else {
1224-
item->setAttribute("itemClass", "ocr_graphic");
1228+
Glib::ustring itemClass = item->itemClass();
1229+
if (itemClass != "ocr_graphic" && itemClass != "ocr_photo" && itemClass != "ocr_separator") {
1230+
item->setAttribute("itemClass", "ocr_graphic");
1231+
}
12251232
std::for_each(item->m_childItems.begin(), item->m_childItems.end(), [](HOCRItem * item) {
12261233
delete item;
12271234
});

qt/data/gimagereader.qrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<file alias="item_par">../../data/icons/item_par.png</file>
2626
<file alias="item_word">../../data/icons/item_word.png</file>
2727
<file alias="item_halftone">../../data/icons/item_halftone.png</file>
28+
<file alias="item_separator">../../data/icons/item_separator.png</file>
2829
<file alias="rotate_page">../../data/icons/rotate_page.png</file>
2930
<file alias="rotate_pages">../../data/icons/rotate_pages.png</file>
3031
<file alias="wconf">../../data/icons/wconf.png</file>

qt/src/hocr/HOCRDocument.cc

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -698,8 +698,10 @@ QString HOCRDocument::displayRoleForItem(const HOCRItem* item) const {
698698
return _("Textline");
699699
} else if (itemClass == "ocrx_word") {
700700
return item->text();
701-
} else if (itemClass == "ocr_graphic") {
701+
} else if (itemClass == "ocr_graphic" || itemClass == "ocr_photo") {
702702
return _("Graphic");
703+
} else if (itemClass == "ocr_separator") {
704+
return _("Separator");
703705
}
704706
return "";
705707
}
@@ -716,8 +718,10 @@ QIcon HOCRDocument::decorationRoleForItem(const HOCRItem* item) const {
716718
return QIcon(":/icons/item_line");
717719
} else if (itemClass == "ocrx_word") {
718720
return QIcon(":/icons/item_word");
719-
} else if (itemClass == "ocr_graphic") {
721+
} else if (itemClass == "ocr_graphic" || itemClass == "ocr_photo") {
720722
return QIcon(":/icons/item_halftone");
723+
} else if (itemClass == "ocr_separator") {
724+
return QIcon(":/icons/item_separator");
721725
}
722726
return QIcon();
723727
}
@@ -984,7 +988,7 @@ void HOCRItem::setAttribute(const QString& name, const QString& value, const QSt
984988
QString HOCRItem::toHtml(int indent) const {
985989
QString cls = itemClass();
986990
QString tag;
987-
if (cls == "ocr_page" || cls == "ocr_carea" || cls == "ocr_graphic") {
991+
if (cls == "ocr_page" || cls == "ocr_carea" || cls == "ocr_graphic" || cls == "ocr_photo" || cls == "ocr_separator") {
988992
tag = "div";
989993
} else if (cls == "ocr_par") {
990994
tag = "p";
@@ -1090,7 +1094,10 @@ HOCRPage::HOCRPage(const QDomElement& element, int pageId, const QString& defaul
10901094
// Ignore graphics which are less than 10 x 10
10911095
delete m_childItems.takeLast();
10921096
} else {
1093-
item->setAttribute("class", "ocr_graphic");
1097+
QString itemClass = item->itemClass();
1098+
if (itemClass != "ocr_graphic" && itemClass != "ocr_photo" && itemClass != "ocr_separator") {
1099+
item->setAttribute("class", "ocr_graphic");
1100+
}
10941101
qDeleteAll(item->m_childItems);
10951102
item->m_childItems.clear();
10961103
}

0 commit comments

Comments
 (0)