Skip to content

Commit

Permalink
Merge pull request #2 from yowidin/feature/viewer
Browse files Browse the repository at this point in the history
Added database viewer
  • Loading branch information
yowidin authored Jun 4, 2023
2 parents c1f0496 + d4d6666 commit b5e270d
Show file tree
Hide file tree
Showing 86 changed files with 7,384 additions and 1,460 deletions.
12 changes: 5 additions & 7 deletions .ci/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,23 @@ def do_run(*args, **kwargs):

def main():
parser = ArgumentParser('Project builder')
parser.add_argument('--preset', '-p', default='release', help='Build preset')

args = parser.parse_args()

source_dir = os.getcwd()
build_dir = os.path.join(source_dir, 'build', args.preset)
build_dir = os.path.join(source_dir, 'build', 'release')

if not os.path.exists(build_dir):
os.makedirs(build_dir)

install_args = ['conan', 'install', source_dir, '-of', build_dir, '-b', 'missing', '-s', 'compiler.cppstd=17', '-s',
'build_type=Release']
build_args = ['conan', 'build', '-b', 'missing', '-s', 'compiler.cppstd=17', '-s', 'build_type=Release',
'-c:h', 'tools.cmake.cmake_layout:build_folder_vars=["settings.build_type"]', source_dir]
if platform == 'darwin':
# Build for High Sierra
install_args.extend(['-s', 'os.version=10.13'])
build_args.extend(['-s', 'os.version=10.13'])

extra_kw = {'cwd': build_dir, 'check': True}
do_run(install_args, **extra_kw)
do_run(['conan', 'build', source_dir], **extra_kw)
do_run(build_args, **extra_kw)
do_run(['cpack', '-G', 'ZIP'], **extra_kw)


Expand Down
42 changes: 16 additions & 26 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,11 @@ on:
pull_request:
branches: [ main ]

jobs:
cancel:
name: Cancel
runs-on: ubuntu-latest
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ${{ matrix.os }}

Expand All @@ -27,16 +22,16 @@ jobs:
max-parallel: 3
matrix:
os:
- windows-2022
# - windows-2022
- ubuntu-22.04
- macos-12
- ubuntu-20.04

steps:
- name: Checkout code
uses: actions/checkout@v1
uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: '3.x'

Expand All @@ -45,17 +40,12 @@ jobs:
python -m pip install --upgrade pip setuptools wheel
pip install conan
- name: Install dependencies (Windows)
if: startsWith(matrix.os, 'windows')
run: |
conan config set general.cmake_generator="Visual Studio 17 2022"
- name: Install dependencies (macOS)
if: startsWith(matrix.os, 'macos')
run: |
brew update
brew install ninja
conan config set general.cmake_generator="Ninja"
- name: Configure conan
run: |
conan --version
conan profile detect
conan config install ./profiles
conan remote add conan-burrito "${{ secrets.CONAN_UPLOAD }}"
- name: Install dependencies (Ubuntu)
if: startsWith(matrix.os, 'ubuntu')
Expand All @@ -68,8 +58,8 @@ jobs:
libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev libxcb-render0-dev \
libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev \
libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev \
libxcb-dri3-dev uuid-dev libxcb-util-dev libxcb-util0-dev
conan config set general.cmake_generator="Ninja"
libxcb-dri3-dev uuid-dev libxcb-util-dev libxcb-util0-dev libxcb-cursor-dev \
mesa-common-dev libegl-dev
- name: Build
run: |
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
compile_commands.json

CMakeUserPresets.json

.DS_Store
.venv
.cache
Expand Down
241 changes: 206 additions & 35 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,54 +1,225 @@
cmake_minimum_required(VERSION 3.6)
project(ocr_suite VERSION 0.0.1 LANGUAGES CXX)
project(ocr_suite VERSION 0.1.0 LANGUAGES CXX)

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(NO_OUTPUT_DIRS)
#################################################################################
### Setup platform-specific flags
set(OCS_WINDOWS OFF)
set(OCS_APPLE OFF)
set(OCS_UNIX OFF)

add_executable(ocr_suite
src/main.cpp
src/video.cpp
src/bmp.cpp
src/ocr.cpp
src/database.cpp
src/db/database.cpp
src/db/statement.cpp
src/speed_meter.cpp
src/options.cpp)
if (APPLE)
set(OCS_APPLE ON)
elseif (UNIX)
set(OCS_UNIX ON)
elseif (WIN32)
set(OCS_WINDOWS ON)
endif ()

message(STATUS "Windows: ${OCS_WINDOWS}")
message(STATUS "Apple: ${OCS_APPLE}")
message(STATUS "Unix: ${OCS_UNIX}")

set(OCS_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
set(OCS_GENERATED_INCLUDE_DIR "${OCS_GENERATED_DIR}/include")
set(OCS_GENERATED_CONFIG_HEADER "${OCS_GENERATED_INCLUDE_DIR}/ocs/config.h")
configure_file(cmake/config.h.in ${OCS_GENERATED_CONFIG_HEADER} @ONLY)

################################################################################
### Dependencies
find_package(Tesseract CONFIG REQUIRED)
find_package(ffmpeg CONFIG REQUIRED)
find_package(PNG CONFIG REQUIRED)
find_package(spdlog CONFIG REQUIRED)
find_package(lyra CONFIG REQUIRED)
find_package(SQLiteBurrito CONFIG REQUIRED)
find_package(Boost CONFIG REQUIRED COMPONENTS filesystem date_time)
set(
common_libs

Tesseract::libtesseract ffmpeg::ffmpeg PNG::PNG
spdlog::spdlog bfg::lyra SQLiteBurrito::library
Boost::filesystem Boost::date_time
)

################################################################################
### FFMPEG helper
add_library(
ffmpeg_helper STATIC

src/ffmpeg/decoder.cpp
src/ffmpeg/traits.cpp
)

target_link_libraries(ffmpeg_helper PUBLIC ${common_libs})

target_include_directories(
ffmpeg_helper

PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
PUBLIC $<BUILD_INTERFACE:${OCS_GENERATED_INCLUDE_DIR}>
)

set_target_properties(
ffmpeg_helper PROPERTIES

OUTPUT_NAME ffmpeg-helper

CXX_STANDARD 17
CXX_STANDARD_REQUIRED YES
CXX_EXTENSIONS NO
)

################################################################################
### Library
add_library(
ocr_lib STATIC

src/recognition/video.cpp
src/recognition/bmp.cpp
src/recognition/ocr.cpp

src/database.cpp
)

target_link_libraries(ocr_lib PUBLIC ${common_libs} ffmpeg_helper)

target_include_directories(
ocr_lib

PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
PUBLIC $<BUILD_INTERFACE:${OCS_GENERATED_INCLUDE_DIR}>
)

set_target_properties(
ocr_lib PROPERTIES

OUTPUT_NAME ocr-lib

CXX_STANDARD 17
CXX_STANDARD_REQUIRED YES
CXX_EXTENSIONS NO
)

target_link_libraries(ocr_suite PRIVATE ${CONAN_LIBS})
################################################################################
### Main Tool
find_package(indicators CONFIG REQUIRED)
set(main_libs indicators::indicators)

target_include_directories(ocr_suite
PUBLIC include
)
add_executable(
ocr_suite

set_target_properties(ocr_suite PROPERTIES
OUTPUT_NAME ocr-suite
src/recognition/main.cpp
src/recognition/speed_meter.cpp
src/recognition/options.cpp
)

CXX_STANDARD 17
CXX_STANDARD_REQUIRED YES
CXX_EXTENSIONS NO
)
target_link_libraries(ocr_suite PRIVATE ocr_lib ${main_libs})

set_target_properties(
ocr_suite PROPERTIES

OUTPUT_NAME ocr-suite

CXX_STANDARD 17
CXX_STANDARD_REQUIRED YES
CXX_EXTENSIONS NO
)

################################################################################
### UI Tool

include(FetchContent)
set(FETCHCONTENT_UPDATES_DISCONNECTED ON)
FetchContent_Declare(
stb

GIT_REPOSITORY https://github.com/nothings/stb
GIT_TAG 8b5f1f37b5b75829fc72d38e7b5d4bcbf8a26d55
)
if (NOT stb_POPULATED)
FetchContent_Populate(stb)
endif ()

# UI Dependencies
find_package(SDL2 CONFIG REQUIRED)
find_package(imgui CONFIG REQUIRED)
find_package(glad CONFIG REQUIRED)
find_package(OpenGL REQUIRED)
set(ui_libs SDL2::SDL2-static SDL2::SDL2main imgui::imgui glad::glad OpenGL::GL)

add_executable(
ocr_suite_viewer

src/viewer/main.cpp
src/viewer/options.cpp
src/viewer/search.cpp
src/viewer/results.cpp

src/viewer/render/frontend.cpp
src/viewer/render/backend.cpp
src/viewer/render/impl/opengl2.cpp
src/viewer/render/impl/opengl3.cpp
src/viewer/render/impl/gles2.cpp
src/viewer/render/impl/gles3.cpp
src/viewer/render/imgui/imgui_impl_sdl_es2.cpp
src/viewer/render/imgui/imgui_impl_sdl_es3.cpp
src/viewer/render/imgui/std_input_text.cpp
src/viewer/render/window.cpp

src/viewer/views/frame_view.cpp
src/viewer/views/search_results_view.cpp
src/viewer/views/search_view.cpp
src/viewer/views/viewer.cpp

${CMAKE_CURRENT_BINARY_DIR}/bindings/imgui_impl_opengl2.cpp
${CMAKE_CURRENT_BINARY_DIR}/bindings/imgui_impl_opengl3.cpp
${CMAKE_CURRENT_BINARY_DIR}/bindings/imgui_impl_sdl.cpp
)

target_link_libraries(ocr_suite_viewer PRIVATE ocr_lib ${ui_libs})

target_include_directories(
ocr_suite_viewer PUBLIC

PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/bindings>
PUBLIC $<BUILD_INTERFACE:${stb_SOURCE_DIR}>
PRIVATE src/viewer/fonts
)

set_target_properties(
ocr_suite_viewer PROPERTIES

OUTPUT_NAME ocr-viewer

CXX_STANDARD 17
CXX_STANDARD_REQUIRED YES
CXX_EXTENSIONS NO
)

################################################################################
### Tests and installers

if (BUILD_TESTS)
add_subdirectory(test)
add_subdirectory(test)
endif ()

option(DOWNLOAD_TESS_DATA "Download tesseract data" OFF)
if (DOWNLOAD_TESS_DATA)
include(FetchContent)
set(FETCHCONTENT_UPDATES_DISCONNECTED ON)
FetchContent_Declare(
include(FetchContent)
set(FETCHCONTENT_UPDATES_DISCONNECTED ON)
FetchContent_Declare(
tessdata

URL https://github.com/tesseract-ocr/tessdata/archive/refs/tags/4.1.0.zip
URL_HASH SHA1=b75493c8567d7c4b7c9e2d771cca0d3443983196
)
if (NOT tessdata_POPULATED)
message(STATUS "Downloading Tesseract data")
FetchContent_Populate(tessdata)

message(STATUS "Copying Tesseract data")
file(COPY ${tessdata_SOURCE_DIR}/ DESTINATION ${CMAKE_BINARY_DIR}/tessdata)
endif ()
)
if (NOT tessdata_POPULATED)
message(STATUS "Downloading Tesseract data")
FetchContent_Populate(tessdata)

message(STATUS "Copying Tesseract data")
file(COPY ${tessdata_SOURCE_DIR}/ DESTINATION ${CMAKE_BINARY_DIR}/tessdata)
endif ()
endif ()

include(cmake/install_helper.cmake)
Expand Down
Loading

0 comments on commit b5e270d

Please sign in to comment.