%global app_id org.gnome.OCRFeeder Name: ocrfeeder Version: 0.8.5 %global forgeurl https://gitlab.gnome.org/GNOME/%{name} %global tag %{version} # %%global commit edd666ac6f04720f3a8ec1bd9f082308d282491d %global date 20220315 %forgemeta Release: 7%{?dist} License: GPL-3.0 Summary: Document layout analysis and optical character recognition system URL: %{forgeurl} Source: %{forgesource} # Upstream merge requests # Fix gocr parameters Patch0: 11.patch # Port to GooCanvas 3.0 Patch1: 12.patch # Fix Tesseract abbreviation for Czech Patch2: 16.patch # Avoid deprecated imghdr module Patch3: 17.patch # Avoid deprecated imp module Patch4: 18.patch # Set default window size instead of size request Patch5: 19.patch # Set program name to application ID Patch6: 20.patch # Specify Gtk version Patch7: 22.patch # Add missing parameter in call to SystemEnginesDialog Patch8: 25.patch # Convert README to MD # Patch9: 14.patch # Fix typos in help # Patch9: 15.patch # Add URLs for translate and vcs-browser to appdata # Patch9: 21.patch BuildArch: noarch BuildRequires: desktop-file-utils BuildRequires: intltool BuildRequires: glib2-devel BuildRequires: gnome-doc-utils BuildRequires: gnome-common BuildRequires: gobject-introspection BuildRequires: goocanvas3-devel BuildRequires: gtk3-devel BuildRequires: gtkspell3 BuildRequires: libappstream-glib BuildRequires: librsvg2-tools BuildRequires: python3-devel BuildRequires: python3-gobject BuildRequires: python3-enchant BuildRequires: python3-lxml BuildRequires: python3-pillow BuildRequires: python3-sane BuildRequires: python3-reportlab BuildRequires: python3-odfpy Requires: GraphicsMagick Requires: ghostscript Requires: gtk3 Requires: goocanvas3 Requires: gtkspell3 Requires: python3-gobject Requires: python3-enchant Requires: python3-lxml Requires: python3-pillow Requires: python3-sane Requires: python3-reportlab Requires: python3-odfpy Requires: tesseract Requires: unpaper Recommends: gocr Recommends: ocrad Recommends: cuneiform Suggests: tesseract-equ Suggests: (tesseract-langpack-afr if langpacks-af) Suggests: (tesseract-langpack-amh if langpacks-am) Suggests: (tesseract-langpack-ara if langpacks-ar) Suggests: (tesseract-langpack-asm if langpacks-as) Suggests: (tesseract-langpack-aze if glibc-langpack-az) Suggests: (tesseract-langpack-aze_cyrl if glibc-langpack-az) Suggests: (tesseract-langpack-bel if langpacks-be) Suggests: (tesseract-langpack-ben if langpacks-bn) Suggests: (tesseract-langpack-bod if langpacks-bo) Suggests: (tesseract-langpack-bos if langpacks-bs) Suggests: (tesseract-langpack-bre if langpacks-br) Suggests: (tesseract-langpack-bul if langpacks-bg) Suggests: (tesseract-langpack-cat if langpacks-ca) # Suggests: (tesseract-langpack-ceb if langpacks-) Suggests: (tesseract-langpack-ces if langpacks-cs) Suggests: (tesseract-langpack-chi_sim if langpacks-zh_CN) Suggests: (tesseract-langpack-chi_sim_vert if langpacks-zh_CN) Suggests: (tesseract-langpack-chi_tra if langpacks-zh_CN) Suggests: (tesseract-langpack-chi_tra_vert if langpacks-zh_CN) Suggests: (tesseract-langpack-chr if langpacks-chr) # Suggests: (tesseract-langpack-cos if langpacks-) Suggests: (tesseract-langpack-cym if langpacks-cy) Suggests: (tesseract-langpack-dan if langpacks-da) Suggests: (tesseract-langpack-deu if langpacks-de) Suggests: (tesseract-langpack-div if glibc-langpack-dv) Suggests: (tesseract-langpack-dzo if langpacks-dz) Suggests: (tesseract-langpack-ell if langpacks-el) Suggests: (tesseract-langpack-eng if langpacks-en) Suggests: (tesseract-langpack-enm if langpacks-en) Suggests: (tesseract-langpack-epo if langpacks-eo) Suggests: (tesseract-langpack-est if langpacks-et) Suggests: (tesseract-langpack-eus if langpacks-eu) Suggests: (tesseract-langpack-fao if glibc-langpack-fo) Suggests: (tesseract-langpack-fas if langpacks-fa) Suggests: (tesseract-langpack-fil if glibc-langpack-fil) Suggests: (tesseract-langpack-fin if langpacks-fi) Suggests: (tesseract-langpack-fra if langpacks-fr) # Suggests: (tesseract-langpack-frk if langpacks-) Suggests: (tesseract-langpack-frm if langpacks-fr) Suggests: (tesseract-langpack-fry if glibc-langpack-fy) Suggests: (tesseract-langpack-gla if glibc-langpack-gd) Suggests: (tesseract-langpack-gle if langpacks-ga) Suggests: (tesseract-langpack-glg if langpacks-gl) Suggests: (tesseract-langpack-grc if langpacks-el) Suggests: (tesseract-langpack-guj if langpacks-gu) Suggests: (tesseract-langpack-hat if glibc-langpack-ht) Suggests: (tesseract-langpack-heb if langpacks-he) Suggests: (tesseract-langpack-hin if langpacks-hi) Suggests: (tesseract-langpack-hrv if langpacks-hr) Suggests: (tesseract-langpack-hun if langpacks-hu) Suggests: (tesseract-langpack-hye if langpacks-hy) Suggests: (tesseract-langpack-iku if langpacks-iu) Suggests: (tesseract-langpack-ind if langpacks-id) Suggests: (tesseract-langpack-isl if langpacks-is) Suggests: (tesseract-langpack-ita if langpacks-it) Suggests: (tesseract-langpack-ita_old if langpacks-it) Suggests: (tesseract-langpack-jav if langpacks-id) Suggests: (tesseract-langpack-jpn if langpacks-ja) Suggests: (tesseract-langpack-jpn_vert if langpacks-ja) Suggests: (tesseract-langpack-kan if langpacks-kn) Suggests: (tesseract-langpack-kat if langpacks-ka) Suggests: (tesseract-langpack-kat_old if langpacks-ka) Suggests: (tesseract-langpack-kaz if langpacks-kk) Suggests: (tesseract-langpack-khm if langpacks-kh) Suggests: (tesseract-langpack-kir if glibc-langpack-ky) Suggests: (tesseract-langpack-kmr if langpacks-km) Suggests: (tesseract-langpack-kor if langpacks-ko) Suggests: (tesseract-langpack-kor_vert if langpacks-ko) Suggests: (tesseract-langpack-lao if langpacks-lo) # Suggests: (tesseract-langpack-lat if langpacks-) Suggests: (tesseract-langpack-lav if langpacks-lv) Suggests: (tesseract-langpack-lit if langpacks-lt) Suggests: (tesseract-langpack-ltz if glibc-langpack-lb) Suggests: (tesseract-langpack-mal if langpacks-ml) Suggests: (tesseract-langpack-mar if langpacks-mr) Suggests: (tesseract-langpack-mkd if langpacks-mk) Suggests: (tesseract-langpack-mlt if glibc-langpack-mt) Suggests: (tesseract-langpack-mon if glibc-langpack-mn) Suggests: (tesseract-langpack-mri if glibc-langpack-mi) Suggests: (tesseract-langpack-msa if langpacks-ms) Suggests: (tesseract-langpack-mya if langpacks-my) Suggests: (tesseract-langpack-nep if langpacks-ne) Suggests: (tesseract-langpack-nld if langpacks-nl) Suggests: (tesseract-langpack-nor if langpacks-nb) Suggests: (tesseract-langpack-oci if glibc-langpack-oc) Suggests: (tesseract-langpack-ori if langpacks-or) Suggests: (tesseract-langpack-pan if langpacks-pa) Suggests: (tesseract-langpack-pol if langpacks-pl) Suggests: (tesseract-langpack-por if langpacks-pt) Suggests: (tesseract-langpack-pus if glibc-langpack-ps) Suggests: (tesseract-langpack-que if glibc-langpack-quz) Suggests: (tesseract-langpack-ron if langpacks-ro) Suggests: (tesseract-langpack-rus if langpacks-ru) Suggests: (tesseract-langpack-san if glibc-langpack-sa) Suggests: (tesseract-langpack-sin if langpacks-si) Suggests: (tesseract-langpack-slk if langpacks-sk) Suggests: (tesseract-langpack-slv if langpacks-sl) Suggests: (tesseract-langpack-snd if glibc-langpack-sd) Suggests: (tesseract-langpack-spa if langpacks-es) Suggests: (tesseract-langpack-spa_old if langpacks-es) Suggests: (tesseract-langpack-sqi if langpacks-sq) Suggests: (tesseract-langpack-srp if langpacks-sr) Suggests: (tesseract-langpack-srp_latn if langpacks-sr) Suggests: (tesseract-langpack-sun if glibc-langpack-su) Suggests: (tesseract-langpack-swa if glibc-langpack-sw) Suggests: (tesseract-langpack-swe if langpacks-sv) Suggests: (tesseract-langpack-syr if langpacks-syr) Suggests: (tesseract-langpack-tam if langpacks-ta) Suggests: (tesseract-langpack-tat if glibc-langpack-tt) Suggests: (tesseract-langpack-tel if langpacks-te) Suggests: (tesseract-langpack-tgk if glibc-langpack-tg) Suggests: (tesseract-langpack-tha if langpacks-th) Suggests: (tesseract-langpack-tir if glibc-langpack-ti) Suggests: (tesseract-langpack-ton if glibc-langpack-to) Suggests: (tesseract-langpack-tur if langpacks-tr) Suggests: (tesseract-langpack-uig if glibc-langpack-ug) Suggests: (tesseract-langpack-ukr if langpacks-uk) Suggests: (tesseract-langpack-urd if langpacks-ur) Suggests: (tesseract-langpack-uzb if glibc-langpack-uz) Suggests: (tesseract-langpack-uzb_cyrl if glibc-langpack-uz) Suggests: (tesseract-langpack-vie if langpacks-vi) Suggests: (tesseract-langpack-yid if langpacks-yi) Suggests: (tesseract-langpack-yor if glibc-langpack-yo) Suggests: tesseract-osd Suggests: (tesseract-script-arabic if langpacks-ar) Suggests: (tesseract-script-armenian if langpacks-hy) Suggests: (tesseract-script-bengali if langpacks-bn) # Suggests: (tesseract-script-canadian_aboriginal if langpacks-) Suggests: (tesseract-script-cherokee if langpacks-chr) Suggests: (tesseract-script-cyrillic if langpacks-ru) Suggests: (tesseract-script-devanagari if langpacks-hi) # Suggests: (tesseract-script-ethiopic if langpacks-) # Suggests: (tesseract-script-fraktur if langpacks-) Suggests: (tesseract-script-georgian if langpacks-ka) Suggests: (tesseract-script-greek if langpacks-el) Suggests: (tesseract-script-gujarati if langpacks-gu) Suggests: (tesseract-script-gurmukhi if langpacks-pa) Suggests: (tesseract-script-hangul if langpacks-ko) Suggests: (tesseract-script-hangul_vert if langpacks-ko) Suggests: (tesseract-script-hans if langpacks-zh_CN) Suggests: (tesseract-script-hans_vert if langpacks-zh_CN) Suggests: (tesseract-script-hant if langpacks-zh_CN) Suggests: (tesseract-script-hant_vert if langpacks-zh_CN) Suggests: (tesseract-script-hebrew if langpacks-he) Suggests: (tesseract-script-japanese if langpacks-ja) Suggests: (tesseract-script-japanese_vert if langpacks-ja) Suggests: (tesseract-script-kannada if langpacks-kn) Suggests: (tesseract-script-khmer if langpacks-km) Suggests: (tesseract-script-lao if langpacks-lo) # Suggests: (tesseract-script-latin if langpacks-) Suggests: (tesseract-script-malayalam if langpacks-ml) Suggests: (tesseract-script-myanmar if langpacks-my) Suggests: (tesseract-script-oriya if langpacks-or) Suggests: (tesseract-script-sinhala if langpacks-si) Suggests: (tesseract-script-syriac if langpacks-syr) Suggests: (tesseract-script-tamil if langpacks-ta) Suggests: (tesseract-script-telugu if langpacks-te) # Suggests: (tesseract-script-thaana if langpacks-) Suggests: (tesseract-script-thai if langpacks-th) Suggests: (tesseract-script-tibetan if langpacks-bo) Suggests: (tesseract-script-vietnamese if langpacks-vi) %if "%{name}" != "%{app_id}" Provides: %{app_id} = %{version}-%{release} %endif Provides: ocrfeeder-cli = %{version}-%{release} %description OCRFeeder is a document layout analysis and OCR system. Given the images it will automatically outline its contents, distinguish between what's graphics and text and perform OCR over the latter. It generates multiple formats being its main one ODT. It features a complete GTK graphical user interface that allows the users to correct any unrecognized characters, defined or correct bounding boxes, set paragraph styles, clean the input images, import PDFs, save and load the project, export everything to multiple formats, etc. %prep %forgeautosetup -p1 # Fix build with Python 3.12 # sed -e 's|import imp; imp.find_module|import importlib; importlib.import_module|' -i m4/m4_ax_python_module.m4 %build ./autogen.sh %configure --enable-maintainer-mode %make_build %install %make_install DESTDIR="%{buildroot}" # fix shebang for f in "%{buildroot}%{_bindir}/%{name}"*; do sed -i -re 's|^(#!/usr/bin/env python)$|\12|' "${f}" done # install icons icon_in="resources/icons/%{app_id}.svg" icon_out="%{app_id}.png" for s in {16,22,24,32,48,64,72,96,128,192,256,512}; do [[ ! -f "%{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/${icon_out}" ]] || continue rsvg-convert "${icon_in}" -w "${s}" -h "${s}" -a -f png -o "${icon_out}" %{__install} -p -D -m 0644 "${icon_out}" "%{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/%{app_id}.png" done if [[ ! -f "%{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{app_id}.svg" ]]; then %{__install} -p -D -m 0644 "${icon_in}" "%{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{app_id}.svg" fi %find_lang "%{name}" --with-gnome %check desktop-file-validate "%{buildroot}/%{_datadir}/applications/%{app_id}.desktop" appstream-util validate-relax --nonet "%{buildroot}%{_metainfodir}/%{app_id}.appdata.xml" %files -f "%{name}.lang" %doc AUTHORS NEWS README TRANSLATORS %license COPYING %{_bindir}/%{name} %{_bindir}/%{name}-cli %{_datadir}/%{name}/ %{_datadir}/applications/%{app_id}.desktop %{_datadir}/icons/hicolor/*/*/%{app_id}.* %{_mandir}/man1/%{name}* %{_metainfodir}/%{app_id}.appdata.xml %{python3_sitelib}/%{name}/ %changelog * Sat Sep 26 2026 Hazel Bunny 0.8.5-7 - Rebuild for Fedora 45 * Sat Feb 28 2026 Hazel Bunny 0.8.5-6 - Rebuild for Fedora 44 * Wed Apr 23 2025 Hazel Bunny 0.8.5-5 - Rebuild for Fedora 42 * Tue Aug 27 2024 Hazel Bunny 0.8.5-4 - Rebuild for Fedora 41 * Mon Jun 17 2024 Hazel Bunny 0.8.5-3 - Fix build for python 3.12 - Fix gocr parameters - Port to goocanvas-3.0 * Wed Apr 26 2023 Hazel Bunny 0.8.5-2 - Switch to forge macros * Wed Apr 26 2023 Hazel Bunny 0.8.5-1 - Update to version 0.8.5 - Update spec for python3 - Remove patches and use upstream source * Sun Feb 09 2020 Tomasz Tomasik 0.8.1-4.20200107git1160f3d - Fix PDF import * Thu Jan 23 2020 Tomasz Tomasik 0.8.1-3.20200107git1160f3d - Update to the latest Python2-based version with built-in odfpy * Tue Feb 05 2019 Tomasz Tomasik 0.8.1-2.20181218git51483c4 - Update patches https://gitlab.gnome.org/GNOME/ocrfeeder/merge_requests/1 * Wed Jan 23 2019 Tomasz Tomasik 0.8.1-1.20181218git51483c4 - Update to the latest version * Wed Jan 23 2019 Tomasz Tomasik 0.8.1-1 - Initial packaging