├── .github └── workflows │ ├── backup-to-gitlab.yml │ ├── call-auto-tag.yml │ ├── call-build-distribution.yml │ ├── call-chatOps.yml │ ├── call-clacheck.yml │ ├── call-commitlint.yml │ ├── call-license-check.yml │ └── cppcheck.yml ├── .gitignore ├── .obs └── workflows.yml ├── .reuse └── dep5 ├── .tx ├── config ├── deepin.conf ├── transifex.yaml └── ts2desktop ├── 3rdparty └── stub_linux │ ├── addr_any.h │ ├── addr_pri.h │ ├── elfio.hpp │ └── stub.h ├── CMakeLists.txt ├── LICENSE ├── LICENSES ├── CC-BY-4.0.txt ├── CC0-1.0.txt ├── GPL-3.0-or-later.txt └── LGPL-3.0-or-later.txt ├── README.md ├── README.zh_CN.md ├── assets ├── appicon_dark.svg ├── appicon_light.svg ├── deepin-ocr.svg ├── icon_advance.dci ├── icon_copy.dci ├── icon_download.dci ├── icon_return.dci ├── icon_tips.dci └── icon_toast_sucess_new.svg ├── com.deepin.Ocr.service ├── debian ├── changelog ├── compat ├── control ├── copyright ├── rules └── source │ └── format ├── deepin-ocr.desktop ├── linglong.yaml ├── llpatches └── linglongDbus.patch ├── resource.qrc ├── src ├── CMakeLists.txt ├── engine │ ├── OCREngine.cpp │ └── OCREngine.h ├── frame.cpp ├── frame.h ├── loadingwidget.cpp ├── loadingwidget.h ├── main.cpp ├── mainwidget.cpp ├── mainwidget.h ├── mainwindow.cpp ├── mainwindow.h ├── ocrapplication.cpp ├── ocrapplication.h ├── resulttextview.cpp ├── resulttextview.h ├── service │ ├── dbusocr_adaptor.cpp │ ├── dbusocr_adaptor.h │ ├── ocrinterface.cpp │ └── ocrinterface.h ├── textloadwidget.cpp ├── textloadwidget.h ├── util │ ├── log.cpp │ └── log.h └── view │ ├── imageview.cpp │ └── imageview.h ├── tests ├── test-prj-running.sh ├── testResource │ └── test.png ├── test_dbus_service.cpp ├── test_mainwindow.cpp ├── test_qtestmain.cpp └── test_resulttextview.cpp └── translations ├── deepin-ocr.ts ├── deepin-ocr_ady.ts ├── deepin-ocr_af.ts ├── deepin-ocr_am_ET.ts ├── deepin-ocr_ar.ts ├── deepin-ocr_ast.ts ├── deepin-ocr_az.ts ├── deepin-ocr_bg.ts ├── deepin-ocr_bn.ts ├── deepin-ocr_bo.ts ├── deepin-ocr_bqi.ts ├── deepin-ocr_br.ts ├── deepin-ocr_ca.ts ├── deepin-ocr_cs.ts ├── deepin-ocr_da.ts ├── deepin-ocr_de.ts ├── deepin-ocr_el.ts ├── deepin-ocr_en_AU.ts ├── deepin-ocr_en_GB.ts ├── deepin-ocr_en_US.ts ├── deepin-ocr_eo.ts ├── deepin-ocr_es.ts ├── deepin-ocr_es_419.ts ├── deepin-ocr_et.ts ├── deepin-ocr_eu.ts ├── deepin-ocr_fa.ts ├── deepin-ocr_fi.ts ├── deepin-ocr_fil.ts ├── deepin-ocr_fr.ts ├── deepin-ocr_gl_ES.ts ├── deepin-ocr_he.ts ├── deepin-ocr_hi_IN.ts ├── deepin-ocr_hr.ts ├── deepin-ocr_hu.ts ├── deepin-ocr_hy.ts ├── deepin-ocr_id.ts ├── deepin-ocr_it.ts ├── deepin-ocr_ja.ts ├── deepin-ocr_ka.ts ├── deepin-ocr_km_KH.ts ├── deepin-ocr_kn_IN.ts ├── deepin-ocr_ko.ts ├── deepin-ocr_ku.ts ├── deepin-ocr_ku_IQ.ts ├── deepin-ocr_ky.ts ├── deepin-ocr_ky@Arab.ts ├── deepin-ocr_lo.ts ├── deepin-ocr_lt.ts ├── deepin-ocr_ml.ts ├── deepin-ocr_mn.ts ├── deepin-ocr_mr.ts ├── deepin-ocr_ms.ts ├── deepin-ocr_my.ts ├── deepin-ocr_nb.ts ├── deepin-ocr_ne.ts ├── deepin-ocr_nl.ts ├── deepin-ocr_pam.ts ├── deepin-ocr_pl.ts ├── deepin-ocr_pt.ts ├── deepin-ocr_pt_BR.ts ├── deepin-ocr_ro.ts ├── deepin-ocr_ru.ts ├── deepin-ocr_sc.ts ├── deepin-ocr_si.ts ├── deepin-ocr_sk.ts ├── deepin-ocr_sl.ts ├── deepin-ocr_sq.ts ├── deepin-ocr_sr.ts ├── deepin-ocr_sv.ts ├── deepin-ocr_sw.ts ├── deepin-ocr_ta.ts ├── deepin-ocr_th.ts ├── deepin-ocr_tr.ts ├── deepin-ocr_tzm.ts ├── deepin-ocr_ug.ts ├── deepin-ocr_uk.ts ├── deepin-ocr_ur.ts ├── deepin-ocr_vi.ts ├── deepin-ocr_zh_CN.ts ├── deepin-ocr_zh_HK.ts └── deepin-ocr_zh_TW.ts /.github/workflows/backup-to-gitlab.yml: -------------------------------------------------------------------------------- 1 | name: backup to gitlab 2 | on: [push] 3 | 4 | concurrency: 5 | group: ${{ github.workflow }} 6 | cancel-in-progress: true 7 | 8 | jobs: 9 | backup-to-gitlabwh: 10 | uses: linuxdeepin/.github/.github/workflows/backup-to-gitlabwh.yml@master 11 | secrets: inherit 12 | 13 | backup-to-gitee: 14 | uses: linuxdeepin/.github/.github/workflows/backup-to-gitee.yml@master 15 | secrets: inherit 16 | -------------------------------------------------------------------------------- /.github/workflows/call-auto-tag.yml: -------------------------------------------------------------------------------- 1 | name: auto tag 2 | 3 | on: 4 | pull_request_target: 5 | types: [opened, synchronize, closed] 6 | paths: 7 | - "debian/changelog" 8 | 9 | concurrency: 10 | group: ${{ github.workflow }}-pull/${{ github.event.number }} 11 | cancel-in-progress: true 12 | 13 | jobs: 14 | auto_tag: 15 | uses: linuxdeepin/.github/.github/workflows/auto-tag.yml@master 16 | secrets: inherit 17 | -------------------------------------------------------------------------------- /.github/workflows/call-build-distribution.yml: -------------------------------------------------------------------------------- 1 | name: Call build-distribution 2 | on: 3 | push: 4 | paths-ignore: 5 | - ".github/workflows/**" 6 | pull_request_target: 7 | paths-ignore: 8 | - ".github/workflows/**" 9 | 10 | jobs: 11 | check_job: 12 | uses: linuxdeepin/.github/.github/workflows/build-distribution.yml@master 13 | secrets: inherit 14 | -------------------------------------------------------------------------------- /.github/workflows/call-chatOps.yml: -------------------------------------------------------------------------------- 1 | name: chatOps 2 | on: 3 | issue_comment: 4 | types: [created] 5 | 6 | jobs: 7 | chatopt: 8 | uses: linuxdeepin/.github/.github/workflows/chatOps.yml@master 9 | secrets: inherit 10 | -------------------------------------------------------------------------------- /.github/workflows/call-clacheck.yml: -------------------------------------------------------------------------------- 1 | name: Call CLA check 2 | on: 3 | issue_comment: 4 | types: [created] 5 | pull_request_target: 6 | types: [opened, closed, synchronize] 7 | 8 | concurrency: 9 | group: ${{ github.workflow }}-pull/${{ github.event.number }} 10 | cancel-in-progress: true 11 | 12 | jobs: 13 | clacheck: 14 | uses: linuxdeepin/.github/.github/workflows/cla-check.yml@master 15 | secrets: inherit 16 | -------------------------------------------------------------------------------- /.github/workflows/call-commitlint.yml: -------------------------------------------------------------------------------- 1 | name: Call commitlint 2 | on: 3 | pull_request_target: 4 | 5 | concurrency: 6 | group: ${{ github.workflow }}-pull/${{ github.event.number }} 7 | cancel-in-progress: true 8 | 9 | jobs: 10 | check_job: 11 | uses: linuxdeepin/.github/.github/workflows/commitlint.yml@master 12 | -------------------------------------------------------------------------------- /.github/workflows/call-license-check.yml: -------------------------------------------------------------------------------- 1 | name: Call License and README Check 2 | on: 3 | pull_request_target: 4 | types: [opened, synchronize, reopened] 5 | 6 | permissions: 7 | pull-requests: write 8 | contents: read 9 | 10 | concurrency: 11 | group: ${{ github.workflow }}-pull/${{ github.event.number }} 12 | cancel-in-progress: true 13 | 14 | jobs: 15 | license-check: 16 | uses: linuxdeepin/.github/.github/workflows/license-check.yml@master 17 | -------------------------------------------------------------------------------- /.github/workflows/cppcheck.yml: -------------------------------------------------------------------------------- 1 | name: cppcheck 2 | on: 3 | pull_request_target: 4 | paths-ignore: 5 | - ".github/workflows/**" 6 | 7 | concurrency: 8 | group: ${{ github.workflow }}-pull/${{ github.event.number }} 9 | cancel-in-progress: true 10 | 11 | jobs: 12 | cppchceck: 13 | name: cppcheck 14 | runs-on: ubuntu-latest 15 | steps: 16 | - run: export 17 | - uses: actions/checkout@v3 18 | with: 19 | ref: ${{ github.event.pull_request.head.sha }} 20 | persist-credentials: false 21 | - uses: linuxdeepin/action-cppcheck@main 22 | with: 23 | github_token: ${{ secrets.GITHUB_TOKEN }} 24 | repository: ${{ github.repository }} 25 | pull_request_id: ${{ github.event.pull_request.number }} 26 | allow_approve: false 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | 6 | # Compiled Dynamic libraries 7 | *.so 8 | *.dylib 9 | 10 | # Compiled Static libraries 11 | *.lai 12 | *.la 13 | *.a 14 | 15 | build*/ 16 | #include*/ 17 | 18 | *.txt.user* 19 | *.pro.user* 20 | *.DS_Store 21 | *.qm 22 | *.autosave 23 | 24 | #vendor/include/* 25 | vendor/lib/* 26 | 27 | .vscode/* 28 | 29 | *.log 30 | 31 | # debian 32 | #debian/* 33 | debian/.debhelper 34 | debian/deepin-image-viewer 35 | debian/files 36 | debian/deepin-image-viewer.substvars 37 | !debian/changelog 38 | !debian/rules 39 | !debian/control 40 | !debian/compat 41 | !debian/source/* 42 | -------------------------------------------------------------------------------- /.obs/workflows.yml: -------------------------------------------------------------------------------- 1 | test_build: 2 | steps: 3 | - link_package: 4 | source_project: deepin:Develop:dde 5 | source_package: %{SCM_REPOSITORY_NAME} 6 | target_project: deepin:CI 7 | 8 | - configure_repositories: 9 | project: deepin:CI 10 | repositories: 11 | - name: deepin_develop 12 | paths: 13 | - target_project: deepin:CI 14 | target_repository: deepin_develop 15 | architectures: 16 | - x86_64 17 | - aarch64 18 | 19 | - name: debian 20 | paths: 21 | - target_project: deepin:CI 22 | target_repository: debian_sid 23 | architectures: 24 | - x86_64 25 | 26 | filters: 27 | event: pull_request 28 | 29 | tag_build: 30 | steps: 31 | - branch_package: 32 | source_project: deepin:Develop:dde 33 | source_package: %{SCM_REPOSITORY_NAME} 34 | target_project: deepin:Unstable:dde 35 | filters: 36 | event: tag_push 37 | 38 | commit_build: 39 | steps: 40 | - trigger_services: 41 | project: deepin:Develop:dde 42 | package: %{SCM_REPOSITORY_NAME} 43 | filters: 44 | event: push 45 | -------------------------------------------------------------------------------- /.reuse/dep5: -------------------------------------------------------------------------------- 1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: deepin-ocr 3 | Upstream-Contact: UnionTech Software Technology Co., Ltd. <> 4 | Source: https://github.com/linuxdeepin/deepin-ocr 5 | 6 | # ci 7 | Files: .github/* .obs/workflows.yml 8 | Copyright: None 9 | License: CC0-1.0 10 | 11 | # gitignore 12 | Files: .gitignore 13 | Copyright: None 14 | License: CC0-1.0 15 | 16 | # xml toml json conf yaml sh 17 | Files: *.toml *.json *conf *.yaml *.sh 18 | Copyright: UnionTech Software Technology Co., Ltd. 19 | License: CC0-1.0 20 | 21 | # debian 22 | Files: debian/* 23 | Copyright: UnionTech Software Technology Co., Ltd. 24 | License: CC0-1.0 25 | 26 | # linglong patch 27 | Files: llpatches/* 28 | Copyright: UnionTech Software Technology Co., Ltd. 29 | License: CC0-1.0 30 | 31 | # Project file 32 | Files: *.pro *.prf *.pri *.qrc *CMakeLists.txt .tx/* 33 | Copyright: UnionTech Software Technology Co., Ltd. 34 | License: CC0-1.0 35 | 36 | # README 37 | Files: README.md README.zh_CN.md 38 | Copyright: UnionTech Software Technology Co., Ltd. 39 | License: CC-BY-4.0 40 | 41 | # assets 42 | Files: assets/* 43 | Copyright: UnionTech Software Technology Co., Ltd. 44 | License: LGPL-3.0-or-later 45 | 46 | # translations 47 | Files: translations/* 48 | Copyright: UnionTech Software Technology Co., Ltd. 49 | License: LGPL-3.0-or-later 50 | 51 | # src 52 | Files: src/* 53 | Copyright: UnionTech Software Technology Co., Ltd. 54 | License: GPL-3.0-or-later 55 | 56 | # tests 57 | Files: tests/* 58 | Copyright: UnionTech Software Technology Co., Ltd. 59 | License: GPL-3.0-or-later 60 | 61 | # com.deepin.Ocr.service 62 | Files: com.deepin.Ocr.service 63 | Copyright: UnionTech Software Technology Co., Ltd. 64 | License: CC-BY-4.0 65 | 66 | # deepin-ocr.desktop 67 | Files: deepin-ocr.desktop 68 | Copyright: UnionTech Software Technology Co., Ltd. 69 | License: CC-BY-4.0 70 | 71 | # 3rdparty/stub_linux 72 | Files: 3rdparty/stub_linux/* 73 | Copyright: coolxv 2019 74 | License: MIT 75 | -------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | minimum_perc = 80 4 | mode = developer 5 | 6 | [o:linuxdeepin:p:deepin-ocr:r:deepin-ocr] 7 | file_filter = translations/deepin-ocr_.ts 8 | source_file = translations/deepin-ocr.ts 9 | source_lang = en 10 | type = QT 11 | -------------------------------------------------------------------------------- /.tx/deepin.conf: -------------------------------------------------------------------------------- 1 | [transifex] 2 | branch = m20 3 | -------------------------------------------------------------------------------- /.tx/transifex.yaml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd. 2 | # 3 | # SPDX-License-Identifier: CC0-1.0 4 | filters: 5 | - filter_type: file 6 | source_file: translations/deepin-ocr.ts 7 | file_format: QT 8 | source_language: en_US 9 | translation_files_expression: translations/deepin-ocr_.ts 10 | settings: 11 | pr_branch_name: transifex_update_ 12 | -------------------------------------------------------------------------------- /.tx/ts2desktop: -------------------------------------------------------------------------------- 1 | DESKTOP_TEMP_FILE=deepin-ocr.desktop.tmp 2 | DESKTOP_SOURCE_FILE=deepin-ocr.desktop 3 | DESKTOP_DEST_FILE=deepin-ocr.desktop 4 | DESKTOP_TS_DIR=translations/desktop 5 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | # 3 | # SPDX-License-Identifier: CC0-1.0 4 | 5 | cmake_minimum_required(VERSION 3.10) 6 | project(deepin-ocr) 7 | 8 | option(DOTEST "option for test" OFF) 9 | 10 | #deepin-ocr 11 | add_subdirectory(src) 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Deepin OCR 2 | 3 | Deepin OCR provides the base character recognition ability on Deepin. 4 | 5 | ## Dependencies 6 | 7 | ### Build dependencies 8 | 9 | See debian/control 10 | 11 | ### Build from source code 12 | 13 | 1. Make sure you have installed all dependencies. 14 | ```` 15 | sudo apt build-dep deepin-ocr 16 | ```` 17 | If you need to use the designer plugin, you should also install: 18 | ```` 19 | sudo apt install qttools5-dev 20 | ```` 21 | 2. Build: 22 | 23 | ```` 24 | $ mkdir build 25 | $ cd build 26 | $ cmake .. 27 | $ make 28 | ```` 29 | 30 | 3. Install: 31 | 32 | ```` 33 | $ sudo make install 34 | ```` 35 | 36 | ## Getting help 37 | 38 | Any usage issues can ask for help via 39 | 40 | * [Gitter](https://gitter.im/orgs/linuxdeepin/rooms) 41 | * [IRC channel](https://webchat.freenode.net/?channels=deepin) 42 | * [Forum](https://bbs.deepin.org) 43 | * [WiKi](https://wiki.deepin.org/) 44 | 45 | ## Getting involved 46 | 47 | We encourage you to report issues and contribute changes 48 | 49 | * [Contribution guide for developers](https://github.com/linuxdeepin/developer-center/wiki/Contribution-Guidelines-for-Developers-en). (English) 50 | 51 | ## License 52 | 53 | Deepin OCR is licensed under [GPL-3.0-or-later](LICENSE). 54 | -------------------------------------------------------------------------------- /README.zh_CN.md: -------------------------------------------------------------------------------- 1 | # Deepin OCR 2 | 3 | Deepint Ocr 提供基础文字识别功能. 4 | 5 | 您应该首先阅读 [Deepin应用程序规范](\ref doc/Specification). 6 | 7 | ## 依赖 8 | 9 | ### 编译依赖 10 | 11 | 编译依赖可以通过查看 debian/control 获取 12 | 13 | ## 安装 14 | 15 | ### 从源代码构建 16 | 17 | 1. 确保已经安装了所有的编译依赖. 18 | ````bash 19 | sudo apt build-dep deepin-ocr 20 | ```` 21 | 如果需要使用qtcreator的`设计`功能,需要安装以下依赖: 22 | ```bash 23 | sudo apt install qttools5-dev 24 | ``` 25 | 2. 构建: 26 | 27 | ```bash 28 | mkdir build 29 | cd build 30 | cmake .. 31 | make 32 | ``` 33 | 34 | 3. 安装: 35 | 36 | ```bash 37 | sudo make install 38 | ``` 39 | 40 | ## 用法 41 | 42 | 命令行执行 `deepin-ocr` 43 | 44 | ## 文档 45 | 46 | - 无 47 | 48 | ## 帮助 49 | 50 | 任何使用问题都可以通过以下方式寻求帮助: 51 | 52 | * [Gitter](https://gitter.im/orgs/linuxdeepin/rooms) 53 | * [IRC channel](https://webchat.freenode.net/?channels=deepin) 54 | * [Forum](https://bbs.deepin.org) 55 | * [WiKi](https://wiki.deepin.org/) 56 | 57 | ## 参与贡献 58 | 59 | 我们鼓励您报告问题并作出更改 60 | 61 | * [开发者代码贡献指南](https://github.com/linuxdeepin/developer-center/wiki/Contribution-Guidelines-for-Developers) 62 | 63 | ## 协议 64 | 65 | Deepin OCR 遵循协议 [GPL-3.0-or-later](LICENSE). 66 | -------------------------------------------------------------------------------- /assets/icon_advance.dci: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxdeepin/deepin-ocr/ca45aa14e9ae7d944169fa8924e68117abc8eb66/assets/icon_advance.dci -------------------------------------------------------------------------------- /assets/icon_copy.dci: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxdeepin/deepin-ocr/ca45aa14e9ae7d944169fa8924e68117abc8eb66/assets/icon_copy.dci -------------------------------------------------------------------------------- /assets/icon_download.dci: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxdeepin/deepin-ocr/ca45aa14e9ae7d944169fa8924e68117abc8eb66/assets/icon_download.dci -------------------------------------------------------------------------------- /assets/icon_return.dci: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxdeepin/deepin-ocr/ca45aa14e9ae7d944169fa8924e68117abc8eb66/assets/icon_return.dci -------------------------------------------------------------------------------- /assets/icon_tips.dci: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxdeepin/deepin-ocr/ca45aa14e9ae7d944169fa8924e68117abc8eb66/assets/icon_tips.dci -------------------------------------------------------------------------------- /assets/icon_toast_sucess_new.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ok 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /com.deepin.Ocr.service: -------------------------------------------------------------------------------- 1 | [D-BUS Service] 2 | Name=com.deepin.Ocr 3 | Exec=/usr/bin/deepin-ocr --dbus 4 | -------------------------------------------------------------------------------- /debian/changelog: -------------------------------------------------------------------------------- 1 | deepin-ocr (6.5.11) unstable; urgency=medium 2 | 3 | * chore: Adjust pkg-config dependency 4 | 5 | -- zhanghongyuan Fri, 17 Oct 2025 08:35:29 +0800 6 | 7 | deepin-ocr (6.5.10) unstable; urgency=medium 8 | 9 | * chore: Adjust open source license configuration 10 | 11 | -- zhanghongyuan Thu, 16 Oct 2025 17:48:00 +0800 12 | 13 | deepin-ocr (6.5.9) unstable; urgency=medium 14 | 15 | * chore: Add new Lao translation file (#67) 16 | 17 | -- dengzhongyuan Wed, 13 Aug 2025 13:58:09 +0800 18 | 19 | deepin-ocr (6.5.8) unstable; urgency=medium 20 | 21 | * chore: Add new Lao translation file 22 | 23 | -- dengzhongyuan Thu, 07 Aug 2025 17:09:13 +0800 24 | 25 | deepin-ocr (6.5.7) unstable; urgency=medium 26 | 27 | * update version to 6.5.7 28 | 29 | -- xiepengfei Tue, 01 Jul 2025 19:23:43 +0800 30 | 31 | deepin-ocr (6.5.6) unstable; urgency=medium 32 | 33 | * update version to 6.5.6 34 | 35 | -- Tian ShiLin Mon, 23 Jun 2025 15:06:46 +0800 36 | 37 | deepin-ocr (6.5.5) unstable; urgency=medium 38 | 39 | * chore: clean up CMake configuration by removing unnecessary compiler flags 40 | 41 | -- dengzhongyuan Fri, 20 Jun 2025 17:45:00 +0800 42 | 43 | deepin-ocr (6.5.4) unstable; urgency=medium 44 | 45 | * chore: update CMake configuration for non-sw_64 architectures 46 | 47 | -- dengzhongyuan Fri, 20 Jun 2025 16:37:22 +0800 48 | 49 | deepin-ocr (6.5.3) unstable; urgency=medium 50 | 51 | * chore: update build dependencies in debian/control 52 | 53 | -- dengzhongyuan Thu, 19 Jun 2025 22:17:22 +0800 54 | 55 | deepin-ocr (6.5.2) unstable; urgency=medium 56 | 57 | * chore: update build dependencies and CMake configuration 58 | 59 | -- dengzhongyuan Thu, 19 Jun 2025 21:58:59 +0800 60 | 61 | deepin-ocr (6.5.1) unstable; urgency=medium 62 | 63 | * fix: Fixed the COR recognition crash 64 | * i18n: Updates for project Deepin OCR (#39) 65 | * chore: update translations. 66 | 67 | -- renbin Thu, 17 Apr 2025 10:14:32 +0800 68 | 69 | deepin-ocr (6.5.0) unstable; urgency=medium 70 | 71 | * feat: enable Qt6 build and switch to Qt6.8 72 | 73 | -- renbin Mon, 20 Jan 2025 10:59:07 +0800 74 | 75 | deepin-ocr (1.5.1) unstable; urgency=medium 76 | 77 | *remove env kwayland-shell 78 | 79 | -- Liu zheng Wed, 06 Nov 2024 15:33:24 +0800 80 | 81 | deepin-ocr (1.5.0) unstable; urgency=medium 82 | 83 | * adapt treeland 84 | 85 | -- Liu zheng Tue, 22 Oct 2024 20:32:59 +0800 86 | 87 | deepin-ocr (1.1.2) unstable; urgency=medium 88 | 89 | * New version 1.1.2. 90 | 91 | -- xiepengfei Wed, 16 Aug 2023 11:43:41 +0800 92 | 93 | deepin-ocr (1.1.1) unstable; urgency=medium 94 | 95 | * New version 1.1.1. 96 | 97 | -- xiepengfei Thur, 13 Apr 2023 15:08:32 +0800 98 | 99 | deepin-ocr (1.1.0) unstable; urgency=medium 100 | 101 | * Use dtkocr instead of PaddleOCR-NCNN 102 | * Add language change 103 | 104 | -- TagBuilder Fri, 10 Mar 2023 10:16:55 +0800 105 | 106 | deepin-ocr (1.0) unstable; urgency=medium 107 | 108 | * Pre-release for deepin-ocr 1.0 109 | 110 | -- TagBuilder Fri, 10 May 2021 14:20:26 +0000 111 | -------------------------------------------------------------------------------- /debian/compat: -------------------------------------------------------------------------------- 1 | 11 2 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: deepin-ocr 2 | Section: utils 3 | Priority: optional 4 | Maintainer: Deepin Packages Builder 5 | Build-Depends: debhelper (>= 11), 6 | cmake, 7 | pkg-config, 8 | qt6-base-dev, 9 | qt6-tools-dev, 10 | qt6-tools-dev-tools, 11 | libdtk6widget-dev, 12 | libdtk6ocr-dev, 13 | libncnn-dev, 14 | libopencv-mobile-dev 15 | Standards-Version: 4.1.3 16 | Homepage: http://www.deepin.org/ 17 | 18 | Package: deepin-ocr 19 | Architecture: any 20 | Depends: ${shlibs:Depends}, ${misc:Depends} 21 | Description: Ocr for UOS 22 | Ocr is a text recognition software. 23 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: deepin-ocr 3 | Upstream-Contact: https://github.com/linuxdeepin/deepin-ocr/issues 4 | Source: https://github.com/linuxdeepin/deepin-ocr 5 | 6 | Files: * 7 | Copyright: 2022 Deepin.Inc 8 | License: GPL-3+ 9 | 10 | Files: debian/* 11 | Copyright: 2022 Deepin.Inc 12 | License: Expat 13 | 14 | Files: 3rdparty/stub_linux/* 15 | Copyright: 2020 Zhang Yu 16 | License: MIT 17 | 18 | License: GPL-3+ 19 | This package is free software; you can redistribute it and/or modify 20 | it under the terms of the GNU General Public License as published by 21 | the Free Software Foundation; either version 3 of the License, or 22 | (at your option) any later version. 23 | . 24 | This package is distributed in the hope that it will be useful, 25 | but WITHOUT ANY WARRANTY; without even the implied warranty of 26 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 27 | GNU General Public License for more details. 28 | . 29 | You should have received a copy of the GNU General Public License 30 | along with this program. If not, see 31 | . 32 | On Debian systems, the complete text of the GNU General 33 | Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". 34 | 35 | License: Expat 36 | Permission is hereby granted, free of charge, to any person obtaining a 37 | copy of this software and associated documentation files (the "Software"), 38 | to deal in the Software without restriction, including without limitation 39 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 40 | and/or sell copies of the Software, and to permit persons to whom the 41 | Software is furnished to do so, subject to the following conditions: 42 | . 43 | The above copyright notice and this permission notice shall be included 44 | in all copies or substantial portions of the Software. 45 | . 46 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 47 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 48 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 49 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 50 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 51 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 52 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFT 53 | 54 | License: MIT 55 | Permission is hereby granted, free of charge, to any person obtaining a 56 | copy of this software and associated documentation files (the 57 | "Software"), to deal in the Software without restriction, including 58 | without limitation the rights to use, copy, modify, merge, publish, 59 | distribute, sub license, and/or sell copies of the Software, and to 60 | permit persons to whom the Software is furnished to do so, subject to 61 | the following conditions: 62 | . 63 | The above copyright notice and this permission notice (including the 64 | next paragraph) shall be included in all copies or substantial portions 65 | of the Software. 66 | . 67 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 68 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 69 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 70 | IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 71 | ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 72 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 73 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 74 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | export QT_SELECT=5 4 | include /usr/share/dpkg/default.mk 5 | 6 | %: 7 | dh $@ 8 | 9 | 10 | override_dh_auto_configure: 11 | dh_auto_configure -- VERSION=$(VERSION) LIB_INSTALL_DIR=/usr/lib/$(DEB_HOST_MULTIARCH) DEFINES+="VERSION=$(DEB_VERSION_UPSTREAM)" 12 | 13 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /deepin-ocr.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Categories=Ocr; 3 | Comment=Deepin ocr 4 | #Exec=/usr/bin/deepin-ocr %F 5 | GenericName=OCR Tool 6 | Icon=deepin-ocr 7 | Name=Deepin Ocr 8 | Type=Application 9 | NoDisplay=true 10 | X-Deepin-ManualID=deepin-ocr 11 | X-Deepin-Vendor=deepin 12 | X-Deepin-TurboType=dtkwidget 13 | 14 | # Translations: 15 | # Do not manually modify! 16 | Comment[lo]=ເຄື່ອງມືຈົດຈຳຕົວອັກສອນ Deepin 17 | Comment[zh_CN]=图文识别工具 18 | Comment[zh_HK]=圖文識別工具 19 | Comment[zh_TW]=圖文識別工具 20 | GenericName[lo]=ເຄື່ອງມື OCR 21 | GenericName[zh_CN]=图文识别工具 22 | GenericName[zh_HK]=圖文識別工具 23 | GenericName[zh_TW]=圖文識別工具 24 | 25 | Name[lo]=Deepin ຈົດຈຳຕົວອັກສອນ 26 | Name[zh_CN]=图文识别工具 27 | Name[zh_HK]=Deepin 圖文識別工具 28 | Name[zh_TW]=Deepin 圖文識別工具 29 | -------------------------------------------------------------------------------- /linglong.yaml: -------------------------------------------------------------------------------- 1 | package: 2 | id: org.deepin.ocr 3 | name: "deepin-ocr" 4 | version: 6.5.3.1 5 | kind: app 6 | description: | 7 | Ocr is a text recognition software. 8 | 9 | runtime: 10 | id: org.deepin.Runtime 11 | version: 23.0.0 12 | 13 | depends: 14 | - id: dtkocr 15 | version: 1.0.4 16 | type: runtime 17 | 18 | source: 19 | kind: local 20 | patch: llpatches/linglongDbus.patch 21 | 22 | build: 23 | kind: cmake 24 | -------------------------------------------------------------------------------- /llpatches/linglongDbus.patch: -------------------------------------------------------------------------------- 1 | --- ../com.deepin.Ocr.orig.service 2022-10-10 16:18:19.000000000 +0800 2 | +++ ../com.deepin.Ocr.service 2022-10-11 08:55:52.444190961 +0800 3 | @@ -1,3 +1,3 @@ 4 | [D-BUS Service] 5 | Name=com.deepin.Ocr 6 | -Exec=/usr/bin/deepin-ocr --dbus 7 | +Exec=/usr/bin/ll-cli run org.deepin.ocr --exec 'deepin-ocr --dbus' 8 | -------------------------------------------------------------------------------- /resource.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | assets/icon_toast_sucess_new.svg 4 | assets/appicon_dark.svg 5 | assets/appicon_light.svg 6 | assets/icon_advance.dci 7 | assets/icon_return.dci 8 | assets/icon_copy.dci 9 | assets/icon_download.dci 10 | assets/icon_tips.dci 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/engine/OCREngine.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #include "OCREngine.h" 6 | #include 7 | #include 8 | #include "util/log.h" 9 | 10 | OCREngine *OCREngine::instance() 11 | { 12 | static OCREngine *ocr_detail = nullptr; 13 | if (ocr_detail == nullptr) { 14 | ocr_detail = new OCREngine; 15 | } 16 | return ocr_detail; 17 | } 18 | 19 | OCREngine::OCREngine() 20 | { 21 | //初始化变量 22 | m_isRunning = false; 23 | 24 | //初始化插件管理库 25 | //此处存在产品设计缺陷: 无法选择插件,无鉴权入口,无性能方面的高级设置入口 26 | //因此此处直接硬编码使用默认插件 27 | qCInfo(dmOcr) << "Initializing OCR driver"; 28 | ocrDriver = new Dtk::Ocr::DOcr; 29 | ocrDriver->loadDefaultPlugin(); 30 | ocrDriver->setUseMaxThreadsCount(2); 31 | QFileInfo mtfi("/dev/mtgpu.0"); 32 | if (mtfi.exists()) { 33 | qCInfo(dmOcr) << "GPU device found, enabling Vulkan hardware acceleration"; 34 | ocrDriver->setUseHardware({{Dtk::Ocr::HardwareID::GPU_Vulkan, 0}}); 35 | } 36 | qCInfo(dmOcr) << "OCR driver initialization completed"; 37 | } 38 | 39 | void OCREngine::setImage(const QImage &image) 40 | { 41 | auto inputImage = image.convertToFormat(QImage::Format_RGB888); 42 | ocrDriver->setImage(image); 43 | } 44 | 45 | QString OCREngine::getRecogitionResult() 46 | { 47 | qCInfo(dmOcr) << "Starting OCR recognition"; 48 | m_isRunning = true; 49 | 50 | ocrDriver->analyze(); 51 | 52 | m_isRunning = false; 53 | QString result = ocrDriver->simpleResult(); 54 | qCInfo(dmOcr) << "OCR recognition completed"; 55 | return result; 56 | } 57 | 58 | bool OCREngine::setLanguage(const QString &language) 59 | { 60 | qCInfo(dmOcr) << "Setting OCR language to:" << language; 61 | if(ocrDriver->isRunning()) { 62 | qCInfo(dmOcr) << "Breaking current analysis for language change"; 63 | ocrDriver->breakAnalyze(); 64 | } 65 | 66 | bool success = ocrDriver->setLanguage(language); 67 | if (!success) { 68 | qCWarning(dmOcr) << "Failed to set language:" << language; 69 | } 70 | return success; 71 | } 72 | -------------------------------------------------------------------------------- /src/engine/OCREngine.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #pragma once 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | namespace Dtk { 12 | namespace Ocr { 13 | class DOcr; 14 | } 15 | } 16 | 17 | class QSettings; 18 | 19 | class OCREngine 20 | { 21 | public: 22 | static OCREngine *instance(); 23 | 24 | bool isRunning() const 25 | { 26 | return m_isRunning; 27 | } 28 | 29 | bool setLanguage(const QString &language); 30 | void setImage(const QImage &image); 31 | QString getRecogitionResult(); 32 | 33 | private: 34 | OCREngine(); 35 | ~OCREngine() = default; 36 | 37 | Dtk::Ocr::DOcr *ocrDriver; 38 | std::atomic_bool m_isRunning; 39 | QSettings *ocrSetting; 40 | }; 41 | -------------------------------------------------------------------------------- /src/frame.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #include "frame.h" 6 | 7 | Frame::Frame(QWidget *parent, Qt::WindowFlags f) 8 | : QFrame(parent, f) 9 | { 10 | 11 | } 12 | 13 | void Frame::resizeEvent(QResizeEvent *event) 14 | { 15 | emit sigFrameResize(); 16 | return QFrame::resizeEvent(event); 17 | } 18 | -------------------------------------------------------------------------------- /src/frame.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #ifndef FRAME_H 6 | #define FRAME_H 7 | 8 | #include 9 | 10 | class Frame : public QFrame 11 | { 12 | Q_OBJECT 13 | public: 14 | Frame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); 15 | signals: 16 | void sigFrameResize(); 17 | protected: 18 | void resizeEvent(QResizeEvent *event) override; 19 | }; 20 | 21 | #endif // FRAME_H 22 | -------------------------------------------------------------------------------- /src/loadingwidget.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #include "loadingwidget.h" 6 | 7 | loadingWidget::loadingWidget(QWidget *parent) 8 | : DLabel(parent) 9 | { 10 | 11 | } 12 | 13 | void loadingWidget::resizeEvent(QResizeEvent *event) 14 | { 15 | emit sigChangeSize(); 16 | return DLabel::resizeEvent(event); 17 | } 18 | -------------------------------------------------------------------------------- /src/loadingwidget.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #ifndef LOADINGWIDGET_H 6 | #define LOADINGWIDGET_H 7 | 8 | #include 9 | DWIDGET_USE_NAMESPACE 10 | 11 | class loadingWidget : public DLabel 12 | { 13 | Q_OBJECT 14 | public: 15 | loadingWidget(QWidget *parent = nullptr); 16 | signals: 17 | void sigChangeSize(); 18 | protected: 19 | void resizeEvent(QResizeEvent *event) override; 20 | }; 21 | 22 | #endif // LOADINGWIDGET_H 23 | -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #include "ocrapplication.h" 6 | #include "service/ocrinterface.h" 7 | #include "service/dbusocr_adaptor.h" 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | #include 17 | #include 18 | #include 19 | #include "util/log.h" 20 | 21 | DWIDGET_USE_NAMESPACE 22 | 23 | int main(int argc, char *argv[]) 24 | { 25 | 26 | if (argc < 2) { 27 | qDebug() << "Cant open a null file"; 28 | return 0; 29 | } 30 | 31 | #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 32 | DGuiApplicationHelper::setUseInactiveColorGroup(false); 33 | #endif 34 | 35 | #if(DTK_VERSION < DTK_VERSION_CHECK(5,4,0,0)) 36 | DApplication::loadDXcbPlugin(); 37 | QScopedPointer app(new DApplication(argc, argv)); 38 | #else 39 | QScopedPointer app(DApplication::globalApplication(argc, argv)); 40 | #endif 41 | app->setOrganizationName("deepin"); 42 | app->setApplicationName("deepin-ocr"); 43 | app->setProductName(QObject::tr("OCR Tool")); 44 | app->setApplicationVersion("1.0"); 45 | 46 | qCInfo(dmOcr) << "Starting Deepin OCR Tool version 1.0"; 47 | 48 | Dtk::Core::DLogManager::registerConsoleAppender(); 49 | Dtk::Core::DLogManager::registerFileAppender(); 50 | 51 | QCommandLineOption dbusOption(QStringList() << "u" << "dbus", "Start from dbus."); 52 | QCommandLineParser cmdParser; 53 | cmdParser.setApplicationDescription("deepin-Ocr"); 54 | cmdParser.addHelpOption(); 55 | cmdParser.addVersionOption(); 56 | cmdParser.addOption(dbusOption); 57 | cmdParser.process(*app); 58 | 59 | app->loadTranslator(); 60 | 61 | OcrApplication instance; 62 | QDBusConnection dbus = QDBusConnection::sessionBus(); 63 | 64 | if (dbus.registerService("com.deepin.Ocr")) { 65 | qCInfo(dmOcr) << "Registered as primary DBus service"; 66 | // 第一次启动 67 | // 注册Dbus服务和对象 68 | dbus.registerObject("/com/deepin/Ocr", &instance); 69 | // 初始化适配器 70 | new DbusOcrAdaptor(&instance); 71 | 72 | if (cmdParser.isSet(dbusOption)) { 73 | // 第一调用已 --dbus参数启动 74 | qCInfo(dmOcr) << "Started in DBus mode, waiting for connections"; 75 | return app->exec(); 76 | } 77 | 78 | instance.openFile(QString(argv[1])); 79 | } else { 80 | qCInfo(dmOcr) << "Another instance is running, forwarding request"; 81 | // 第二次运行此应用, 82 | // 调用DBus接口,处理交给第一次调用的进程 83 | // 本进程退退出 84 | OcrInterface *pOcr = new OcrInterface("com.deepin.Ocr", "/com/deepin/Ocr", QDBusConnection::sessionBus(), &instance); 85 | qDebug() << __FUNCTION__ << __LINE__; 86 | pOcr->openFile(QString(argv[1])); 87 | delete pOcr; 88 | return 0; 89 | } 90 | 91 | return app->exec(); 92 | } 93 | 94 | 95 | -------------------------------------------------------------------------------- /src/mainwidget.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #ifndef WIDGET_H 6 | #define WIDGET_H 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | 17 | #include 18 | #include 19 | 20 | #include "resulttextview.h" 21 | 22 | #include "textloadwidget.h" 23 | #include "engine/OCREngine.h" 24 | 25 | class Frame; 26 | class QThread; 27 | class QGridLayout; 28 | class QHBoxLayout; 29 | class ImageView; 30 | class loadingWidget; 31 | class QShortcut; 32 | DWIDGET_USE_NAMESPACE 33 | 34 | class MainWidget : public DWidget 35 | { 36 | Q_OBJECT 37 | 38 | public: 39 | explicit MainWidget(QWidget *parent = nullptr); 40 | ~MainWidget(); 41 | 42 | void setupUi(QWidget *Widget); 43 | void setupConnect(); 44 | void retranslateUi(QWidget *Widget); 45 | 46 | void createLoadingUi(); 47 | void deleteLoadingUi(); 48 | void loadingUi(); 49 | //初始化快捷键 50 | void initShortcut(); 51 | 52 | bool openImage(const QString &path); 53 | void openImage(const QImage &img, const QString &name = ""); 54 | 55 | void loadHtml(const QString &html); 56 | void loadString(const QString &string); 57 | void resultEmpty(); 58 | 59 | //缩放显示label 60 | void initScaleLabel(); 61 | protected: 62 | void resizeEvent(QResizeEvent *event); 63 | void paintEvent(QPaintEvent *event); 64 | private slots: 65 | void setIcons(DGuiApplicationHelper::ColorType themeType); 66 | void slotCopy(); 67 | void slotExport(); 68 | void runRec(bool needSetImage); 69 | private: 70 | QGridLayout *m_mainGridLayout{nullptr}; 71 | QHBoxLayout *m_horizontalLayout{nullptr}; 72 | ResultTextView *m_plainTextEdit{nullptr}; 73 | QHBoxLayout *m_buttonHorizontalLayout{nullptr}; 74 | QHBoxLayout *m_tipHorizontalLayout{nullptr}; 75 | DLabel *m_tiplabel{nullptr}; 76 | DIconButton *m_copyBtn{nullptr}; 77 | DIconButton *m_exportBtn{nullptr}; 78 | ImageView *m_imageview{nullptr}; 79 | 80 | QHBoxLayout *m_frameLayout{nullptr}; 81 | QFrame *m_frame{nullptr}; 82 | 83 | QHBoxLayout *m_frameStackLayout{nullptr}; 84 | Frame *m_frameStack{nullptr}; 85 | 86 | DLabel *m_tipIconLabel{nullptr}; 87 | DHorizontalLine *m_line{nullptr}; 88 | 89 | QString m_imgName; //当前图片绝对路径 90 | QWidget *m_pwidget{nullptr}; 91 | TextLoadWidget *m_loadingWidget{nullptr}; 92 | DLabel *m_loadingTip{nullptr}; 93 | 94 | bool m_isLoading{false}; 95 | 96 | QThread *m_loadImagethread{nullptr}; 97 | QMutex m_mutex; 98 | QString m_result; 99 | QImage *m_currentImg{nullptr}; 100 | 101 | DStackedWidget *m_resultWidget{nullptr}; 102 | DLabel *m_noResult{nullptr}; 103 | loadingWidget *m_loadingOcr{nullptr}; 104 | QShortcut *m_scAddView = nullptr; 105 | QShortcut *m_scReduceView = nullptr; 106 | 107 | QWidget *m_emptyWidget; 108 | 109 | int m_isEndThread = 1; 110 | QSettings *ocrSetting; 111 | std::atomic_bool m_needReRunRec = false; 112 | 113 | DComboBox *languageSelectBox {nullptr}; // 语言选择框 114 | 115 | signals: 116 | void sigResult(const QString &); 117 | 118 | }; 119 | 120 | #endif // WIDGET_H 121 | -------------------------------------------------------------------------------- /src/mainwindow.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #include "mainwindow.h" 6 | #include "mainwidget.h" 7 | #include "service/dbusocr_adaptor.h" 8 | #include "util/log.h" 9 | 10 | #include 11 | #include 12 | 13 | #include 14 | 15 | MainWindow::MainWindow(QWidget *parent) 16 | : DMainWindow(parent) 17 | { 18 | setAttribute(Qt::WA_DeleteOnClose); 19 | if (!m_mainWidget) { 20 | m_mainWidget = new MainWidget(this); 21 | } 22 | this->setCentralWidget(m_mainWidget); 23 | this->resize(840, 550); 24 | this->setMinimumSize(840, 550); 25 | } 26 | 27 | MainWindow::~MainWindow() 28 | { 29 | 30 | } 31 | 32 | bool MainWindow::openFile(const QString &filePaths) 33 | { 34 | qCInfo(dmOcr) << "Opening file in main window:" << filePaths; 35 | //更改打开判断文件是否是图片文件 36 | bool success = m_mainWidget->openImage(filePaths); 37 | if (!success) { 38 | qCWarning(dmOcr) << "Failed to open file in main window:" << filePaths; 39 | } 40 | return success; 41 | } 42 | 43 | bool MainWindow::openImage(const QImage &image, const QString &name) 44 | { 45 | qCInfo(dmOcr) << "Opening image in main window, size:" << image.size() << "name:" << name; 46 | m_mainWidget->openImage(image, name); 47 | return true; 48 | } 49 | -------------------------------------------------------------------------------- /src/mainwindow.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #ifndef MAINWINDOW_H 6 | #define MAINWINDOW_H 7 | 8 | #include 9 | #include 10 | 11 | class MainWidget; 12 | DWIDGET_USE_NAMESPACE 13 | 14 | class MainWindow : public DMainWindow 15 | { 16 | Q_OBJECT 17 | 18 | public: 19 | explicit MainWindow(QWidget *parent = nullptr); 20 | ~MainWindow() override; 21 | 22 | bool openFile(const QString &filePaths); 23 | 24 | bool openImage(const QImage &image,const QString & name=""); 25 | private: 26 | MainWidget *m_mainWidget{nullptr}; 27 | }; 28 | #endif // MAINWINDOW_H 29 | -------------------------------------------------------------------------------- /src/ocrapplication.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #include "ocrapplication.h" 6 | #include "mainwindow.h" 7 | #include "engine/OCREngine.h" 8 | #include 9 | #include "util/log.h" 10 | 11 | OcrApplication::OcrApplication(QObject *parent) : QObject(parent) 12 | { 13 | 14 | } 15 | 16 | bool OcrApplication::openFile(QString filePath) 17 | { 18 | qCInfo(dmOcr) << __FUNCTION__ << __LINE__ << filePath; 19 | bool bRet = false; 20 | if (!OCREngine::instance()->isRunning()) { 21 | MainWindow *win = new MainWindow(); 22 | //增加判断,空图片不会启动 23 | bRet = win->openFile(filePath); 24 | if (bRet) { 25 | win->show(); 26 | //第一次启动才居中 27 | if (m_loadingCount == 0) { 28 | Dtk::Widget::moveToCenter(win); 29 | m_loadingCount++; 30 | qCDebug(dmOcr) << "First launch, centering window"; 31 | } 32 | } else { 33 | qCWarning(dmOcr) << "Failed to open file:" << filePath; 34 | } 35 | } else { 36 | qCInfo(dmOcr) << "OCR is currently running, cannot open new file"; 37 | } 38 | 39 | return bRet; 40 | } 41 | 42 | void OcrApplication::openImage(QImage image) 43 | { 44 | //增加判断,空图片不会启动 45 | if (!image.isNull() && image.width() >= 1) { 46 | qCInfo(dmOcr) << "Opening image, size:" << image.size(); 47 | if (!OCREngine::instance()->isRunning()) { 48 | MainWindow *win = new MainWindow(); 49 | win->openImage(image); 50 | win->show(); 51 | //第一次启动才居中 52 | if (m_loadingCount == 0) { 53 | Dtk::Widget::moveToCenter(win); 54 | m_loadingCount++; 55 | qCDebug(dmOcr) << "First launch, centering window"; 56 | } 57 | } else { 58 | qCInfo(dmOcr) << "OCR is currently running, cannot open new image"; 59 | } 60 | } else { 61 | qCWarning(dmOcr) << "Invalid image: null or width < 1"; 62 | } 63 | } 64 | 65 | void OcrApplication::openImageAndName(QImage image, QString imageName) 66 | { 67 | //增加判断,空图片不会启动 68 | if (!image.isNull() && image.width() >= 1) { 69 | qCInfo(dmOcr) << "Opening image with name:" << imageName << ", size:" << image.size(); 70 | if (!OCREngine::instance()->isRunning()) { 71 | MainWindow *win = new MainWindow(); 72 | win->openImage(image, imageName); 73 | win->show(); 74 | //第一次启动才居中 75 | if (m_loadingCount == 0) { 76 | Dtk::Widget::moveToCenter(win); 77 | m_loadingCount++; 78 | qCDebug(dmOcr) << "First launch, centering window"; 79 | } 80 | } else { 81 | qCInfo(dmOcr) << "OCR is currently running, cannot open new image"; 82 | } 83 | } else { 84 | qCWarning(dmOcr) << "Invalid image: null or width < 1"; 85 | } 86 | } 87 | 88 | -------------------------------------------------------------------------------- /src/ocrapplication.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #ifndef OCRAPPLICATION_H 6 | #define OCRAPPLICATION_H 7 | 8 | #include "mainwindow.h" 9 | #include 10 | #include 11 | 12 | class OcrApplication : public QObject 13 | { 14 | Q_OBJECT 15 | public: 16 | explicit OcrApplication(QObject *parent = nullptr); 17 | 18 | Q_INVOKABLE bool openFile(QString filePath); 19 | 20 | Q_INVOKABLE void openImage(QImage image); 21 | 22 | Q_INVOKABLE void openImageAndName(QImage image, QString imageName); 23 | 24 | 25 | signals: 26 | 27 | public slots: 28 | 29 | private: 30 | int m_loadingCount{0};//启动次数 31 | }; 32 | 33 | #endif // OCRAPPLICATION_H 34 | -------------------------------------------------------------------------------- /src/resulttextview.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #ifndef RESULTTEXTVIEW_H 6 | #define RESULTTEXTVIEW_H 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | class ResultTextView : public QPlainTextEdit 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit ResultTextView(QWidget *parent = nullptr); 19 | 20 | protected: 21 | void contextMenuEvent(QContextMenuEvent *e) override; 22 | void resizeEvent(QResizeEvent *event) override; 23 | void mouseMoveEvent(QMouseEvent *e) override; 24 | void mousePressEvent(QMouseEvent *e) override; 25 | void mouseReleaseEvent(QMouseEvent *e) override; 26 | bool event(QEvent *event) override; 27 | //触摸屏功能函数 28 | bool gestureEvent(QGestureEvent *event); 29 | void tapGestureTriggered(QTapGesture *tap); 30 | void tapAndHoldGestureTriggered(QTapAndHoldGesture *tapAndHold); 31 | void panTriggered(QPanGesture *pan); 32 | void pinchTriggered(QPinchGesture *pinch); 33 | // void swipeTriggered(QSwipeGesture *swipe); 34 | 35 | //add for single refers to the sliding 36 | void slideGestureY(qreal diff); 37 | void slideGestureX(qreal diff); 38 | 39 | 40 | private slots: 41 | void onSelectionArea(); 42 | signals: 43 | void sigChangeSize(); 44 | private: 45 | QMenu *m_Menu{nullptr}; 46 | QAction *m_actCopy{nullptr}; 47 | QAction *m_actCut{nullptr}; 48 | QAction *m_actPaste{nullptr}; 49 | QAction *m_actSelectAll{nullptr}; 50 | 51 | bool m_slideContinue = false; 52 | 53 | //触摸屏 54 | enum GestureAction { 55 | GA_null, 56 | GA_tap, 57 | GA_slide, 58 | GA_pinch, 59 | GA_hold, 60 | GA_pan, 61 | GA_swipe 62 | }; 63 | GestureAction m_gestureAction = GA_null; 64 | 65 | qint64 m_tapBeginTime = 0; 66 | ulong m_lastMouseTime; 67 | int m_lastMouseYpos; 68 | int m_lastMouseXpos; 69 | qreal m_stepSpeedY = 0; 70 | qreal m_stepSpeedX = 0; 71 | qreal durationY = {0.0}; 72 | qreal durationX = {0.0}; 73 | qreal changeY = {0.0}; 74 | qreal changeX = {0.0}; 75 | ulong m_lastMouseTimeX; 76 | ulong m_lastMouseTimeY; 77 | 78 | qreal m_scaleFactor = 1; 79 | qreal m_currentStepScaleFactor = 1; 80 | Qt::GestureState m_tapStatus = Qt::NoGesture; 81 | int m_fontSize = 16; 82 | }; 83 | 84 | #endif // RESULTTEXTVIEW_H 85 | -------------------------------------------------------------------------------- /src/service/dbusocr_adaptor.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #include "dbusocr_adaptor.h" 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include "util/log.h" 16 | 17 | DbusOcrAdaptor::DbusOcrAdaptor(QObject *parent) 18 | : QDBusAbstractAdaptor(parent) 19 | { 20 | // constructor 21 | setAutoRelaySignals(true); 22 | } 23 | 24 | DbusOcrAdaptor::~DbusOcrAdaptor() 25 | { 26 | // destructor 27 | } 28 | 29 | bool DbusOcrAdaptor::openFile(QString filePath) 30 | { 31 | qCInfo(dmOcr) << "Opening file via DBus:" << filePath; 32 | QMetaObject::invokeMethod(parent(), "openFile", Q_ARG(QString, filePath)); 33 | return true; 34 | } 35 | 36 | void DbusOcrAdaptor::openImageAndName(QByteArray images, QString imageName) 37 | { 38 | qCInfo(dmOcr) << __FUNCTION__ << __LINE__; 39 | QByteArray data = images; 40 | QString tmp_data = QString::fromLatin1(data.data(), data.size()); 41 | QByteArray srcData = QByteArray::fromBase64(tmp_data.toLatin1()); 42 | data = qUncompress(srcData); 43 | QImage image; 44 | if (!image.loadFromData(data)) { 45 | qCWarning(dmOcr) << "Failed to load image data for:" << imageName; 46 | return; 47 | } 48 | qCDebug(dmOcr) << "Image loaded successfully, size:" << image.size(); 49 | QMetaObject::invokeMethod(parent(), "openImageAndName", Q_ARG(QImage, image), Q_ARG(QString, imageName)); 50 | } 51 | 52 | void DbusOcrAdaptor::openImage(QByteArray images) 53 | { 54 | qCInfo(dmOcr) << "Opening image via DBus"; 55 | QByteArray data = images; 56 | QString tmp_data = QString::fromLatin1(data.data(), data.size()); 57 | QByteArray srcData = QByteArray::fromBase64(tmp_data.toLatin1()); 58 | data = qUncompress(srcData); 59 | QImage image; 60 | if (!image.loadFromData(data)) { 61 | qCWarning(dmOcr) << "Failed to load image data"; 62 | return; 63 | } 64 | qCDebug(dmOcr) << "Image loaded successfully, size:" << image.size(); 65 | QMetaObject::invokeMethod(parent(), "openImage", Q_ARG(QImage, image)); 66 | } 67 | 68 | -------------------------------------------------------------------------------- /src/service/dbusocr_adaptor.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #ifndef DBUSOCR_ADAPTOR_H 6 | #define DBUSOCR_ADAPTOR_H 7 | 8 | #include 9 | #include 10 | QT_BEGIN_NAMESPACE 11 | class QByteArray; 12 | template class QList; 13 | template class QMap; 14 | class QString; 15 | class QVariant; 16 | QT_END_NAMESPACE 17 | 18 | /* 19 | * @bref: dbusocr_adaptor 提供给外部程序调用的方法 20 | */ 21 | class DbusOcrAdaptor: public QDBusAbstractAdaptor 22 | { 23 | Q_OBJECT 24 | Q_CLASSINFO("D-Bus Interface", "com.deepin.Ocr") 25 | Q_CLASSINFO("D-Bus Introspection", "" 26 | " \n" 27 | 28 | " \n" 29 | " \n" 30 | " \n" 31 | 32 | " \n" 33 | " \n" 34 | " \n" 35 | " \n" 36 | 37 | " \n" 38 | " \n" 39 | " \n" 40 | " \n" 41 | 42 | " \n") 43 | public: 44 | explicit DbusOcrAdaptor(QObject *parent); 45 | virtual ~DbusOcrAdaptor(); 46 | 47 | public Q_SLOTS: // METHODS 48 | void openImage(QByteArray images); 49 | void openImageAndName(QByteArray images,QString imageName); 50 | 51 | bool openFile(QString filePath); 52 | 53 | Q_SIGNALS: // SIGNALS 54 | }; 55 | 56 | #endif // DBUSDRAW_ADAPTOR_H 57 | -------------------------------------------------------------------------------- /src/service/ocrinterface.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #include "ocrinterface.h" 6 | #include 7 | 8 | OcrInterface::OcrInterface(const QString &serviceName, const QString &ObjectPath, 9 | const QDBusConnection &connection, QObject *parent) 10 | : QDBusAbstractInterface(serviceName, ObjectPath, staticInterfaceName(), connection, parent) 11 | { 12 | 13 | } 14 | 15 | OcrInterface::~OcrInterface() 16 | { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/service/ocrinterface.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #ifndef OCRINTERFACE_H 6 | #define OCRINTERFACE_H 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | class OcrInterface: public QDBusAbstractInterface 21 | { 22 | Q_OBJECT 23 | public: 24 | static inline const char *staticInterfaceName() 25 | { 26 | return "com.deepin.Ocr"; 27 | } 28 | 29 | public: 30 | /* 31 | * @param: serviceName QDBusConnection 注册的服务名字 32 | * @param: ObjectPath QDBusConnection 注册的对象路径 33 | */ 34 | OcrInterface(const QString &serviceName, const QString &ObjectPath, 35 | const QDBusConnection &connection, QObject *parent = nullptr); 36 | QDBusConnection dbus = QDBusConnection::sessionBus(); 37 | ~OcrInterface(); 38 | 39 | public Q_SLOTS: // METHODS 40 | /* 41 | * @bref:openFile 通过路径打开图片文件 42 | * @param: filePath 图片的路径 43 | * @return: QDBusPendingReply 44 | */ 45 | inline QDBusPendingReply<> openFile(const QString &filePath) 46 | { 47 | return call(QStringLiteral("openFile"), filePath); 48 | } 49 | 50 | /* 51 | * @bref:openImages 52 | * @param: image 图片 53 | * @return: QDBusPendingReply 54 | * @note: 55 | */ 56 | inline QDBusPendingReply<> openImage(const QImage &image) 57 | { 58 | qDebug() << __FUNCTION__; 59 | QByteArray data; 60 | QBuffer buf(&data); 61 | if (image.save(&buf, "PNG")) { 62 | data = qCompress(data, 9); 63 | data = data.toBase64(); 64 | } 65 | return call(QStringLiteral("openImage"), QVariant::fromValue(data)); 66 | } 67 | 68 | /* 69 | * @bref:openImages 70 | * @param: image 图片 71 | * @param: imageName 图片名称 72 | * @return: QDBusPendingReply 73 | * @note: 74 | */ 75 | inline QDBusPendingReply<> openImageAndName(const QImage &image, const QString &imageName) 76 | { 77 | qDebug() << __FUNCTION__; 78 | QByteArray data; 79 | QBuffer buf(&data); 80 | if (image.save(&buf, "PNG")) { 81 | data = qCompress(data, 9); 82 | data = data.toBase64(); 83 | } 84 | return call(QStringLiteral("openImageAndName"), QVariant::fromValue(data), imageName); 85 | } 86 | 87 | Q_SIGNALS: // SIGNALS 88 | }; 89 | 90 | namespace com { 91 | namespace deepin { 92 | typedef ::OcrInterface Ocr; 93 | } 94 | } 95 | #endif // DRAWINTERFACE_H 96 | -------------------------------------------------------------------------------- /src/textloadwidget.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #include "textloadwidget.h" 6 | #include 7 | 8 | TextLoadWidget::TextLoadWidget(DWidget *parent) 9 | : DWidget(parent) 10 | { 11 | this->setWindowFlags(Qt::FramelessWindowHint); 12 | setAttribute(Qt::WA_TranslucentBackground, true); 13 | m_spinner = new DSpinner(this); 14 | m_spinner->start(); 15 | m_spinner->setFixedSize(24, 24); 16 | m_spinner->show(); 17 | } 18 | -------------------------------------------------------------------------------- /src/textloadwidget.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #ifndef TEXTLOADWIDGET_H 6 | #define TEXTLOADWIDGET_H 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | DWIDGET_USE_NAMESPACE 13 | class QVBoxLayout; 14 | 15 | class TextLoadWidget : public DWidget 16 | { 17 | Q_OBJECT 18 | public: 19 | TextLoadWidget(DWidget *parent = nullptr); 20 | private : 21 | DSpinner *m_spinner{nullptr}; 22 | QVBoxLayout *m_vboxLayout{nullptr}; 23 | DLabel *m_label{nullptr}; 24 | }; 25 | 26 | #endif // TEXTLOADWIDGET_H 27 | -------------------------------------------------------------------------------- /src/util/log.cpp: -------------------------------------------------------------------------------- 1 | #include "log.h" 2 | 3 | Q_LOGGING_CATEGORY(dmOcr, "deepin.ocr") -------------------------------------------------------------------------------- /src/util/log.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | Q_DECLARE_LOGGING_CATEGORY(dmOcr) -------------------------------------------------------------------------------- /src/view/imageview.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | /* 6 | *图像显示界面 7 | */ 8 | #ifndef IMAGEVIEW_H 9 | #define IMAGEVIEW_H 10 | 11 | #include 12 | 13 | class QGraphicsPixmapItem; 14 | class QGestureEvent; 15 | class QPinchGesture; 16 | 17 | class ImageView : public QGraphicsView 18 | { 19 | Q_OBJECT 20 | public: 21 | ImageView(QWidget *parent = nullptr); 22 | ~ImageView(); 23 | //通过路径打开图片 24 | void openImage(const QString &path); 25 | 26 | //用于鼠标滚轮滑动 27 | qreal windowRelativeScale() const; 28 | qreal imageRelativeScale() const; 29 | void scaleAtPoint(QPoint pos, qreal factor); 30 | void setScaleValue(qreal v); 31 | //自适应窗口 32 | void autoFit(); 33 | //鼠标移动事件 34 | void mouseReleaseEvent(QMouseEvent *e) override; 35 | void mousePressEvent(QMouseEvent *e) override; 36 | void mouseMoveEvent(QMouseEvent *e) override; 37 | bool event(QEvent *event)override; 38 | bool gestureEvent(QGestureEvent *event); 39 | 40 | //返回当前图片img 41 | const QImage image(); 42 | void openFilterImage(QImage img); 43 | public slots: 44 | //适应窗口大小 45 | void fitWindow(); 46 | //适应图片大小 47 | void fitImage(); 48 | //旋转图片,感觉index角度,-为左,+为右 49 | void RotateImage(const int &index); 50 | // //打开该图片 51 | // void openImage(QImage *img); 52 | 53 | //窗口大小改变事件 54 | void resizeEvent(QResizeEvent *event) override; 55 | //鼠标滚轮事件 56 | void wheelEvent(QWheelEvent *event) override; 57 | protected: 58 | //二指捏合功能的触屏事件 59 | void handleGestureEvent(QGestureEvent *gesture); 60 | void pinchTriggered(QPinchGesture *gesture); 61 | signals: 62 | void scaled(qreal perc); 63 | void showScaleLabel(); 64 | private: 65 | QString m_currentPath;//当前图片路径 66 | QGraphicsPixmapItem *m_pixmapItem{nullptr};//当前图像的item 67 | bool m_isFitImage = false;//是否适应图片 68 | bool m_isFitWindow = false;//是否适应窗口 69 | qreal m_scal = 1.0; 70 | int m_rotateAngel = 0; //旋转角度 71 | QImage *m_currentImage{nullptr};//当前原始图像 72 | QImage m_FilterImage{nullptr};//当前处理的图像 73 | QImage m_lightContrastImage{nullptr};//亮度曝光度图像 74 | 75 | }; 76 | 77 | #endif // IMAGEVIEW_H 78 | -------------------------------------------------------------------------------- /tests/test-prj-running.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 4 | # 5 | # SPDX-License-Identifier: CC0-1.0 6 | 7 | #export QT_QPA_PLATFORM='offscreen' 8 | export QTEST_FUNCTION_TIMEOUT='800000' 9 | export DISPLAY=":0" 10 | export QT_QPA_PLATFORM= 11 | 12 | export QT_LOGGING_RULES="qt.qpa.xcb.xcberror=false" 13 | export QT_LOGGING_RULES="qt.qpa.xcb.*=false" 14 | export QT_LOGGING_RULES="qt.qpa.*=false" 15 | export QT_LOGGING_RULES="*=false" 16 | 17 | rm -rf ${HOME}/Pictures/ocr_test 18 | mkdir -p ${HOME}/Pictures/ocr_test 19 | cp -r ./testResource ${HOME}/Pictures/ocr_test 20 | cp ../assets/model/* ${HOME}/Pictures/ocr_test/* 21 | 22 | cd .. 23 | rm -rf ./build-ut 24 | rm -rf ./build 25 | mkdir build-ut 26 | 27 | cmake . -B build -D DOTEST=ON 28 | cd build 29 | 30 | #自动读取当前处理器核心数,但考虑到服务器上会同时存在多个构建,完全占用服务器CPU会导致构建变慢,所以限制使用的核心不超过8个 31 | JOBS=`cat /proc/cpuinfo| grep "processor"| wc -l` 32 | if [ $JOBS -gt 8 ] 33 | then JOBS=8 34 | elif [ $JOBS -eq 0 ] 35 | then JOBS=1 36 | fi 37 | 38 | echo use processor count: $JOBS 39 | make deepin-ocr_test -j$JOBS 40 | 41 | lcov --directory ./src/CMakeFiles/deepin-ocr_test.dir --zerocounters 42 | ./src/deepin-ocr_test 43 | 44 | lcov --directory . --capture --output-file ./coverageResult/deepin-ocr_Coverage.info 45 | echo \ ===================\ do\ filter\ begin\ ====================\ 46 | lcov --remove ./coverageResult/deepin-ocr_Coverage.info '*/3rdparty/*' '*/deepin-ocr_test_autogen/*' '*/deepin-ocr_autogen/*' '*/usr/include/*' '*/usr/local/*' '*/tests/*' '*/googletest/*' -o ./coverageResult/deepin-ocr_Coverage.info 47 | echo \ ===================\ do\ filter\ end\ ====================\ 48 | genhtml -o ./coverageResult/report ./coverageResult/deepin-ocr_Coverage.info 49 | 50 | sleep 2 51 | 52 | lcov --directory . --capture --output-file ./coverageResult/deepin-ocr_Coverage.info 53 | echo \ ===================\ do\ filter\ begin\ ====================\ 54 | lcov --remove ./coverageResult/deepin-ocr_Coverage.info '*/3rdparty/*' '*/deepin-ocr_test_autogen/*' '*/deepin-ocr_autogen/*' '*/usr/include/*' '*/usr/local/*' '*/tests/*' '*/googletest/*' -o ./coverageResult/deepin-ocr_Coverage.info 55 | echo \ ===================\ do\ filter\ end\ ====================\ 56 | genhtml -o ./coverageResult/report ./coverageResult/deepin-ocr_Coverage.info 57 | 58 | 59 | 60 | cd ./../build-ut 61 | 62 | cp -r ./../build/coverageResult/report/ ./ 63 | mv report html 64 | cd html 65 | mv index.html cov_deepin-ocr.html 66 | 67 | cd .. 68 | mkdir report 69 | cd report 70 | cp ./../../build/report/report_deepin-ocr.xml ./ 71 | 72 | cd .. 73 | cp ./../build/asan_deepin-ocr.log* ./asan_deepin-ocr.log 74 | 75 | exit 0 76 | -------------------------------------------------------------------------------- /tests/testResource/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linuxdeepin/deepin-ocr/ca45aa14e9ae7d944169fa8924e68117abc8eb66/tests/testResource/test.png -------------------------------------------------------------------------------- /tests/test_dbus_service.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #define private public 14 | #define protected public 15 | 16 | #include "ocrapplication.h" 17 | #include "service/dbusocr_adaptor.h" 18 | #include "service/ocrinterface.h" 19 | //初始拉起主界面 20 | TEST(OcrInterface, mainwindow) 21 | { 22 | OcrInterface *pOcr = new OcrInterface("com.deepin.Ocr", "/com/deepin/Ocr", QDBusConnection::sessionBus()); 23 | qDebug() << __FUNCTION__ << __LINE__; 24 | QString imagePath = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation) + "/Wallpapers/marian-kroell-qElMHWePpok-unsplash.jpg";; 25 | pOcr->openFile(imagePath); 26 | QTest::qWait(2000); 27 | QImage img = QImage(imagePath); 28 | pOcr->openImage(img); 29 | QTest::qWait(2000); 30 | pOcr->openImageAndName(img, "TestName"); 31 | QTest::qWait(2000); 32 | delete pOcr; 33 | 34 | } 35 | 36 | 37 | TEST(DbusOcrAdaptor, MainWidget_show) 38 | { 39 | //DbusOcrAdaptor *adaptor = new DbusOcrAdaptor(nullptr); 40 | //delete adaptor; 41 | } 42 | 43 | 44 | -------------------------------------------------------------------------------- /tests/test_mainwindow.cpp: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. 2 | // 3 | // SPDX-License-Identifier: GPL-3.0-or-later 4 | 5 | #include 6 | #include 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | #define private public 13 | #define protected public 14 | 15 | #include "ocrapplication.h" 16 | #include "mainwidget.h" 17 | #include "view/imageview.h" 18 | //初始拉起主界面 19 | TEST(MainWindow, mainwindow) 20 | { 21 | OcrApplication instance; 22 | instance.openFile(""); 23 | QTest::qWait(2000); 24 | } 25 | 26 | //其余case 27 | //初始拉起主界面,带有参数的 28 | TEST(MainWindow, mainwindow_openFile) 29 | { 30 | QString picPath = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation) + "/ocr_test/testResource/test.png"; 31 | OcrApplication instance; 32 | instance.openFile(picPath); 33 | bool bRet = false; 34 | while (!bRet) { 35 | if (!PaddleOCRApp::instance()->isRunning()) { 36 | bRet = true; 37 | QTest::qWait(1000); 38 | } 39 | } 40 | 41 | instance.openImage(QImage(picPath).scaled(200, 200)); 42 | 43 | bRet = false; 44 | while (!bRet) { 45 | if (!PaddleOCRApp::instance()->isRunning()) { 46 | bRet = true; 47 | QTest::qWait(1000); 48 | } 49 | } 50 | 51 | instance.openImageAndName(QImage(picPath).scaled(10, 10), picPath); 52 | QTest::qWait(2000); 53 | } 54 | 55 | //初始拉起主界面,带有参数的 56 | TEST(MainWidget, MainWidget_show) 57 | { 58 | MainWidget *a = new MainWidget(); 59 | DGuiApplicationHelper::ColorType themeType = DGuiApplicationHelper::LightType; 60 | a->setIcons(themeType); 61 | a->loadHtml(""); 62 | a->loadHtml("test"); 63 | a->loadString(""); 64 | a->loadString("test"); 65 | a->slotCopy(); 66 | a->resultEmpty(); 67 | a->deleteLater(); 68 | a = nullptr; 69 | QTest::qWait(2000); 70 | } 71 | 72 | TEST(ImageView, ImageView_show) 73 | { 74 | QString picPath = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation) + "/Wallpapers/luca-micheli-ruWkmt3nU58-unsplash.jpg"; 75 | ImageView *imageView = new ImageView(); 76 | imageView->openImage(picPath); 77 | imageView->fitImage(); 78 | imageView->fitWindow(); 79 | imageView->autoFit(); 80 | imageView->imageRelativeScale(); 81 | imageView->setScaleValue(1.1); 82 | imageView->setScaleValue(0.9); 83 | imageView->RotateImage(90); 84 | 85 | imageView->scaleAtPoint(QPoint(10, 10), 1.2); 86 | QPinchGesture *gesture = new QPinchGesture; 87 | imageView->pinchTriggered(gesture); 88 | delete gesture; 89 | 90 | QTest::qWait(2000); 91 | delete imageView; 92 | } 93 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ady.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Текст не распознан 8 | 9 | 10 | 11 | Copy text 12 | Копировать текст 13 | 14 | 15 | 16 | Save as TXT 17 | Сохранить как TXT 18 | 19 | 20 | 21 | Recognizing 22 | Распознавание 23 | 24 | 25 | 26 | Copied 27 | Скопировано 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | Инструмент OCR 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Копировать 44 | 45 | 46 | 47 | Cut 48 | Вырезать 49 | 50 | 51 | 52 | Select All 53 | Выделить всё 54 | 55 | 56 | 57 | Paste 58 | Вставить 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Совет: Чем яснее изображение, тем точнее текст 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_af.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Geen teks herken 8 | 9 | 10 | 11 | Copy text 12 | Kopieer teks 13 | 14 | 15 | 16 | Save as TXT 17 | Stoor as TXT 18 | 19 | 20 | 21 | Recognizing 22 | Herken 23 | 24 | 25 | 26 | Copied 27 | Kopieer 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR Wapen 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Kopieer 44 | 45 | 46 | 47 | Cut 48 | Knip 49 | 50 | 51 | 52 | Select All 53 | Kies Al 54 | 55 | 56 | 57 | Paste 58 | Plak 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Tips: Hoe duidelik die beeld is, hoe akkuraat is die teks 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_am_ET.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | տեքստ չի ճանաչվել 8 | 9 | 10 | 11 | Copy text 12 | տեքստը անգրագիտել 13 | 14 | 15 | 16 | Save as TXT 17 | TXT որպես պահպանել 18 | 19 | 20 | 21 | Recognizing 22 | ճանաչում է 23 | 24 | 25 | 26 | Copied 27 | անգրագիտվել է 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR գործիքը 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | անգրագիտել 44 | 45 | 46 | 47 | Cut 48 | անգրագիտել և կտրել 49 | 50 | 51 | 52 | Select All 53 | բոլորը ընտրել 54 | 55 | 56 | 57 | Paste 58 | փոխադրել 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Խորացուցիչ տեսանյութի դեպքում տեքստը ավելի ճշգրիտ է 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ast.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Nun ye un textu reconocíu 8 | 9 | 10 | 11 | Copy text 12 | Copiar textu 13 | 14 | 15 | 16 | Save as TXT 17 | Gardar como TXT 18 | 19 | 20 | 21 | Recognizing 22 | Reconocíu 23 | 24 | 25 | 26 | Copied 27 | Copiáu 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | Ferramenta OCR 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Copiar 44 | 45 | 46 | 47 | Cut 48 | Cortar 49 | 50 | 51 | 52 | Select All 53 | Selecciona totu 54 | 55 | 56 | 57 | Paste 58 | Pegar 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Consejos: Cuanto más claru sea l'imatxu, más precísu será l'textu 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_bg.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Не е признат текст 8 | 9 | 10 | 11 | Copy text 12 | Копирай текст 13 | 14 | 15 | 16 | Save as TXT 17 | Запази като TXT 18 | 19 | 20 | 21 | Recognizing 22 | Признаване 23 | 24 | 25 | 26 | Copied 27 | Копиран 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | Инструмент за OCR 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Копирай 44 | 45 | 46 | 47 | Cut 48 | Изрежи 49 | 50 | 51 | 52 | Select All 53 | Избери всичко 54 | 55 | 56 | 57 | Paste 58 | Постави 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Съвет: С по-ясна снимка текстът е по-точен 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_bn.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | নন্ত্র লেখা পরিচিত হয়নি 8 | 9 | 10 | 11 | Recognize language 12 | ভাষা চিহ্নিত করুন 13 | 14 | 15 | 16 | Simplified Chinese 17 | সরল চীনা 18 | 19 | 20 | 21 | English 22 | ইংরেজী 23 | 24 | 25 | 26 | Traditional Chinese 27 | পূর্বীয় চীনা 28 | 29 | 30 | 31 | Copy text 32 | লেখা কopi করুন 33 | 34 | 35 | 36 | Save as TXT 37 | TXT আকারে সংরক্ষণ করুন 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | অ্যান্ডু (Ctrl+Z) 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | রেডো (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | Recognizing 52 | পরিচিতি করছে 53 | 54 | 55 | 56 | Copied 57 | কopi করা হয়েছে 58 | 59 | 60 | 61 | QObject 62 | 63 | 64 | OCR Tool 65 | OCR উপকরণ 66 | 67 | 68 | 69 | ResultTextView 70 | 71 | 72 | Copy 73 | কopi 74 | 75 | 76 | 77 | Cut 78 | কাট 79 | 80 | 81 | 82 | Select All 83 | সব নির্বাচন করুন 84 | 85 | 86 | 87 | Paste 88 | পাস্ট 89 | 90 | 91 | 92 | Widget 93 | 94 | 95 | Tips: The clearer the image is, the more accurate the text is 96 | পয়েন্ট: ছবি আরও স্পষ্ট হলে, লেখা আরও সঠিক হবে 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_bqi.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | hič hîli nê šênâsâyi nakêrd 8 | 9 | 10 | 11 | Recognize language 12 | زبان تشخیص کردن 13 | 14 | 15 | 16 | Simplified Chinese 17 | چینی ساده 18 | 19 | 20 | 21 | English 22 | انگلیسی 23 | 24 | 25 | 26 | Traditional Chinese 27 | چینی کلاسیک 28 | 29 | 30 | 31 | Copy text 32 | lefgiri hîl 33 | 34 | 35 | 36 | Save as TXT 37 | zaft kerdên vê onvān TXT 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | لغو (Ctrl+Z) 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | تکرار (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | Recognizing 52 | vê rasmiyat êšnāxtên 53 | 54 | 55 | 56 | Copied 57 | lefgiri vâbi 58 | 59 | 60 | 61 | QObject 62 | 63 | 64 | OCR Tool 65 | awzār OCR 66 | 67 | 68 | 69 | ResultTextView 70 | 71 | 72 | Copy 73 | lefgiri 74 | 75 | 76 | 77 | Cut 78 | jā goro kerdên 79 | 80 | 81 | 82 | Select All 83 | pêsandê poy 84 | 85 | 86 | 87 | Paste 88 | jā vandên 89 | 90 | 91 | 92 | Widget 93 | 94 | 95 | Tips: The clearer the image is, the more accurate the text is 96 | nokta: har čê šîvāt diyâri tar bu, hîl dêyiq tar hêď 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_br.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MainWidget 6 | 7 | Recognizing 8 | الإدراك 9 | 10 | 11 | Copied 12 | تم نسخه 13 | 14 | 15 | No text recognized 16 | لا يوجد نص تم إدراكه 17 | 18 | 19 | Copy text 20 | نسخ النص 21 | 22 | 23 | Save as TXT 24 | الحفظ ك TXT 25 | 26 | 27 | Recognize language 28 | تعرف على اللغة 29 | 30 | 31 | Simplified Chinese 32 | الصينية البسيطة 33 | 34 | 35 | English 36 | الإنجليزية 37 | 38 | 39 | Traditional Chinese 40 | الصينية التقليدية 41 | 42 | 43 | Undo (Ctrl+Z) 44 | الاستعادة (Ctrl+Z) 45 | 46 | 47 | Redo (Ctrl+Shift+Z) 48 | إعادة الاستعادة (Ctrl+Shift+Z) 49 | 50 | 51 | 52 | QObject 53 | 54 | OCR Tool 55 | أداة التعرف على النص 56 | 57 | 58 | 59 | ResultTextView 60 | 61 | Copy 62 | نسخ 63 | 64 | 65 | Cut 66 | قص 67 | 68 | 69 | Paste 70 | لصق 71 | 72 | 73 | Select All 74 | اختر كل شيء 75 | 76 | 77 | 78 | Widget 79 | 80 | Tips: The clearer the image is, the more accurate the text is 81 | نصائح: كلما كانت الصورة أوضح، زادت دقة النص 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /translations/deepin-ocr_da.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MainWidget 6 | 7 | Recognizing 8 | Genkognisering 9 | 10 | 11 | Copied 12 | Kopieret 13 | 14 | 15 | No text recognized 16 | Ingen tekst genkendt 17 | 18 | 19 | Copy text 20 | Kopier tekst 21 | 22 | 23 | Save as TXT 24 | Gem som TXT 25 | 26 | 27 | Recognize language 28 | Genkend sprog 29 | 30 | 31 | Simplified Chinese 32 | Forenklet kinesisk 33 | 34 | 35 | English 36 | Engelsk 37 | 38 | 39 | Traditional Chinese 40 | Traditionelt kinesisk 41 | 42 | 43 | Undo (Ctrl+Z) 44 | Fortryd (Ctrl+Z) 45 | 46 | 47 | Redo (Ctrl+Shift+Z) 48 | Gentag (Ctrl+Shift+Z) 49 | 50 | 51 | 52 | QObject 53 | 54 | OCR Tool 55 | OCR-Værktøj 56 | 57 | 58 | 59 | ResultTextView 60 | 61 | Copy 62 | Kopier 63 | 64 | 65 | Cut 66 | Klip 67 | 68 | 69 | Paste 70 | Indsæt 71 | 72 | 73 | Select All 74 | Vælg alt 75 | 76 | 77 | 78 | Widget 79 | 80 | Tips: The clearer the image is, the more accurate the text is 81 | Tip: Jo bedre billedet er, jo mere præcis er teksten 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /translations/deepin-ocr_en_AU.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | No text recognized 8 | 9 | 10 | 11 | Copy text 12 | Copy text 13 | 14 | 15 | 16 | Save as TXT 17 | Save as TXT 18 | 19 | 20 | 21 | Recognizing 22 | Recognizing 23 | 24 | 25 | 26 | Copied 27 | Copied 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR Tool 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Copy 44 | 45 | 46 | 47 | Cut 48 | Cut 49 | 50 | 51 | 52 | Select All 53 | Select All 54 | 55 | 56 | 57 | Paste 58 | Paste 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Tips: The clearer the image is, the more accurate the text is 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_en_GB.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | No text recognized 8 | 9 | 10 | 11 | Copy text 12 | Copy text 13 | 14 | 15 | 16 | Save as TXT 17 | Save as TXT 18 | 19 | 20 | 21 | Recognizing 22 | Recognizing 23 | 24 | 25 | 26 | Copied 27 | Copied 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR Tool 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Copy 44 | 45 | 46 | 47 | Cut 48 | Cut 49 | 50 | 51 | 52 | Select All 53 | Select All 54 | 55 | 56 | 57 | Paste 58 | Paste 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Tips: The clearer the image is, the more accurate the text is 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_en_US.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MainWidget 6 | 7 | Recognizing 8 | 9 | 10 | 11 | Copied 12 | 13 | 14 | 15 | No text recognized 16 | 17 | 18 | 19 | Copy text 20 | 21 | 22 | 23 | Save as TXT 24 | 25 | 26 | 27 | Recognize language 28 | 29 | 30 | 31 | Simplified Chinese 32 | 33 | 34 | 35 | English 36 | 37 | 38 | 39 | Traditional Chinese 40 | 41 | 42 | 43 | Undo (Ctrl+Z) 44 | 45 | 46 | 47 | Redo (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | 52 | QObject 53 | 54 | OCR Tool 55 | 56 | 57 | 58 | 59 | ResultTextView 60 | 61 | Copy 62 | 63 | 64 | 65 | Cut 66 | 67 | 68 | 69 | Paste 70 | 71 | 72 | 73 | Select All 74 | 75 | 76 | 77 | 78 | Widget 79 | 80 | Tips: The clearer the image is, the more accurate the text is 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /translations/deepin-ocr_eo.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Neniu teksto rekonstruita 8 | 9 | 10 | 11 | Copy text 12 | Kopiu tekston 13 | 14 | 15 | 16 | Save as TXT 17 | Konservu kiel TXT 18 | 19 | 20 | 21 | Recognizing 22 | Rekonstruante 23 | 24 | 25 | 26 | Copied 27 | Kopiat 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR Instrumento 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Kopiu 44 | 45 | 46 | 47 | Cut 48 | Forĵetu 49 | 50 | 51 | 52 | Select All 53 | Selektu ĉion 54 | 55 | 56 | 57 | Paste 58 | Almetu 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Ŝtato: La pli klara la bildo, la pli preciza la teksto. 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_et.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Teksti ei tunnistatud 8 | 9 | 10 | 11 | Recognize language 12 | Tuvasta keel 13 | 14 | 15 | 16 | Simplified Chinese 17 | Jätkveline korea 18 | 19 | 20 | 21 | English 22 | Inglise 23 | 24 | 25 | 26 | Traditional Chinese 27 | Traditsiooniline korea 28 | 29 | 30 | 31 | Copy text 32 | Kopeeri tekst 33 | 34 | 35 | 36 | Save as TXT 37 | Salvesta kui TXT 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | Tagasivõtmine (Ctrl+Z) 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | Uuesti teha (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | Recognizing 52 | Tunnistamine 53 | 54 | 55 | 56 | Copied 57 | Kopeeritud 58 | 59 | 60 | 61 | QObject 62 | 63 | 64 | OCR Tool 65 | OCR一夜直译为“光学字符识别”工具 66 | 67 | 68 | 69 | ResultTextView 70 | 71 | 72 | Copy 73 | Kopeeri 74 | 75 | 76 | 77 | Cut 78 | Lõiguta 79 | 80 | 81 | 82 | Select All 83 | Vali kõik 84 | 85 | 86 | 87 | Paste 88 | Liiguta 89 | 90 | 91 | 92 | Widget 93 | 94 | 95 | Tips: The clearer the image is, the more accurate the text is 96 | Mõistlik aidatavus: kõrgetemajal pilt on tekst paremini täpsed 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_eu.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MainWidget 6 | 7 | 8 | No text recognized 9 | Ez da testu bat ezagutzen 10 | 11 | 12 | 13 | Recognize language 14 | Hizkuntza ezagutu 15 | 16 | 17 | 18 | Simplified Chinese 19 | Chinera errazatua 20 | 21 | 22 | 23 | English 24 | Ingelesa 25 | 26 | 27 | 28 | Traditional Chinese 29 | Chinera tradizionala 30 | 31 | 32 | 33 | Copy text 34 | Kopiatu testua 35 | 36 | 37 | 38 | Save as TXT 39 | Gorde TXT moduan 40 | 41 | 42 | 43 | Undo (Ctrl+Z) 44 | Berritu (Ctrl+Z) 45 | 46 | 47 | 48 | Redo (Ctrl+Shift+Z) 49 | Berrabiarazi (Ctrl+Shift+Z) 50 | 51 | 52 | 53 | Recognizing 54 | Ezagutzen 55 | 56 | 57 | 58 | Copied 59 | Kopiatua 60 | 61 | 62 | 63 | QObject 64 | 65 | 66 | OCR Tool 67 | OCR tresna 68 | 69 | 70 | 71 | ResultTextView 72 | 73 | 74 | Copy 75 | Kopiatu 76 | 77 | 78 | 79 | Cut 80 | Mugitu 81 | 82 | 83 | 84 | Select All 85 | Aukeratu dena 86 | 87 | 88 | 89 | Paste 90 | Itsatsi 91 | 92 | 93 | 94 | Widget 95 | 96 | 97 | Tips: The clearer the image is, the more accurate the text is 98 | Adierazpena: Bildetik osoa da, testua osoa da 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /translations/deepin-ocr_fa.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MainWidget 6 | 7 | 8 | No text recognized 9 | متنی شناسایی نشد 10 | 11 | 12 | 13 | Recognize language 14 | زبان را شناسایی کن 15 | 16 | 17 | 18 | Simplified Chinese 19 | چینی ساده 20 | 21 | 22 | 23 | English 24 | انگلیسی 25 | 26 | 27 | 28 | Traditional Chinese 29 | چینی سنتی 30 | 31 | 32 | 33 | Copy text 34 | متن را کپی کن 35 | 36 | 37 | 38 | Save as TXT 39 | ذخیره به عنوان TXT 40 | 41 | 42 | 43 | Undo (Ctrl+Z) 44 | لغو (کنترل + Z) 45 | 46 | 47 | 48 | Redo (Ctrl+Shift+Z) 49 | تکرار (کنترل + Shift + Z) 50 | 51 | 52 | 53 | Recognizing 54 | در حال شناسایی 55 | 56 | 57 | 58 | Copied 59 | کپی شد 60 | 61 | 62 | 63 | QObject 64 | 65 | 66 | OCR Tool 67 | اِسِکرِیِن تُول 68 | 69 | 70 | 71 | ResultTextView 72 | 73 | 74 | Copy 75 | کپی 76 | 77 | 78 | 79 | Cut 80 | برید 81 | 82 | 83 | 84 | Select All 85 | همه را انتخاب کن 86 | 87 | 88 | 89 | Paste 90 | چسباندن 91 | 92 | 93 | 94 | Widget 95 | 96 | 97 | Tips: The clearer the image is, the more accurate the text is 98 | نکته: تصویر پاکتری باشد، متن دقیقتری خواهد بود 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /translations/deepin-ocr_fil.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Wala pang tekstong nakilala 8 | 9 | 10 | 11 | Copy text 12 | Kopyahin ang teksto 13 | 14 | 15 | 16 | Save as TXT 17 | I-save bilang TXT 18 | 19 | 20 | 21 | Recognizing 22 | Nakikilala 23 | 24 | 25 | 26 | Copied 27 | Nilikha 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | Tool para sa OCR 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Kopyahin 44 | 45 | 46 | 47 | Cut 48 | I-cut 49 | 50 | 51 | 52 | Select All 53 | Piliin lahat 54 | 55 | 56 | 57 | Paste 58 | I-paste 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Tip: Ang mas malinaw ang larawan, ang mas tumpay ang teksto. 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_he.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | לא זוהה טקסט 8 | 9 | 10 | 11 | Recognize language 12 | זיהוי שפה 13 | 14 | 15 | 16 | Simplified Chinese 17 | סינית מפושטת 18 | 19 | 20 | 21 | English 22 | אנגלית 23 | 24 | 25 | 26 | Traditional Chinese 27 | סינית מסורתית 28 | 29 | 30 | 31 | Copy text 32 | העתקת הטקסט 33 | 34 | 35 | 36 | Save as TXT 37 | שמירה כ־TXT 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | ביטול (Ctrl+Z) 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | ביצוע מחדש (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | 52 | Recognizing 53 | מזהה 54 | 55 | 56 | 57 | Copied 58 | הועתק 59 | 60 | 61 | 62 | QObject 63 | 64 | 65 | OCR Tool 66 | כלי OCR 67 | 68 | 69 | 70 | ResultTextView 71 | 72 | 73 | Copy 74 | העתקה 75 | 76 | 77 | 78 | Cut 79 | גזירה 80 | 81 | 82 | 83 | Select All 84 | בחירה בהכול 85 | 86 | 87 | 88 | Paste 89 | הדבקה 90 | 91 | 92 | 93 | Widget 94 | 95 | 96 | Tips: The clearer the image is, the more accurate the text is 97 | עצות: ככל שהתמונה תהיה ברורה יותר כך הטקסט יהיה ברור יותר. 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_hi_IN.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | लेख की पहचान करना विफल 8 | 9 | 10 | 11 | Recognize language 12 | भाषा पहचानें 13 | 14 | 15 | 16 | Simplified Chinese 17 | सरल चीनी 18 | 19 | 20 | 21 | English 22 | अंग्रेजी 23 | 24 | 25 | 26 | Traditional Chinese 27 | पारंपरिक चीनी 28 | 29 | 30 | 31 | Copy text 32 | लेख कॉपी करें 33 | 34 | 35 | 36 | Save as TXT 37 | TXT के रूप में संचित करें 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | उत्तर लेना (Ctrl+Z) 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | दोबारा करें (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | Recognizing 52 | पहचानना जारी 53 | 54 | 55 | 56 | Copied 57 | कॉपी करना सफल 58 | 59 | 60 | 61 | QObject 62 | 63 | 64 | OCR Tool 65 | ओसीआर साधन 66 | 67 | 68 | 69 | ResultTextView 70 | 71 | 72 | Copy 73 | कॉपी 74 | 75 | 76 | 77 | Cut 78 | कट 79 | 80 | 81 | 82 | Select All 83 | सभी चुनें 84 | 85 | 86 | 87 | Paste 88 | पेस्ट 89 | 90 | 91 | 92 | Widget 93 | 94 | 95 | Tips: The clearer the image is, the more accurate the text is 96 | सहायक निर्देश : चित्र गुणवत्ता उच्च होने पर पहचाना गया लेख भी सटीक होगा 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_hr.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Nema prepoznatog teksta 8 | 9 | 10 | 11 | Recognize language 12 | Prepoznaj jezik 13 | 14 | 15 | 16 | Simplified Chinese 17 | Pojednostavljeni kineski 18 | 19 | 20 | 21 | English 22 | Engleski 23 | 24 | 25 | 26 | Traditional Chinese 27 | Tradicionalni kineski 28 | 29 | 30 | 31 | Copy text 32 | Kopiraj tekst 33 | 34 | 35 | 36 | Save as TXT 37 | Spremi kao TXT 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | Povuči (Ctrl+Z) 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | Ponovi (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | Recognizing 52 | Prepoznavanje 53 | 54 | 55 | 56 | Copied 57 | Kopirano 58 | 59 | 60 | 61 | QObject 62 | 63 | 64 | OCR Tool 65 | OCR alat 66 | 67 | 68 | 69 | ResultTextView 70 | 71 | 72 | Copy 73 | Kopiraj 74 | 75 | 76 | 77 | Cut 78 | Izreži 79 | 80 | 81 | 82 | Select All 83 | Odaberi sve 84 | 85 | 86 | 87 | Paste 88 | Zalijepi 89 | 90 | 91 | 92 | Widget 93 | 94 | 95 | Tips: The clearer the image is, the more accurate the text is 96 | Savjet: Češća je slika, tačnija je tekst 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_hy.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Տեքստ չի ճանաչվել 8 | 9 | 10 | 11 | Copy text 12 | Կապակցել տեքստը 13 | 14 | 15 | 16 | Save as TXT 17 | Պահպանել TXT որպես 18 | 19 | 20 | 21 | Recognizing 22 | ճանաչում է 23 | 24 | 25 | 26 | Copied 27 | Կապակցվել է 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR գործիքը 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Կապակցել 44 | 45 | 46 | 47 | Cut 48 | Կտրել 49 | 50 | 51 | 52 | Select All 53 | Ընտրել բոլորը 54 | 55 | 56 | 57 | Paste 58 | Փոխանցել 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Խորանալ: Իմագինը ավելի բացառիկ է, ավելի ճշգրիտ է տեքստը 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_id.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MainWidget 6 | 7 | 8 | No text recognized 9 | Tidak ada teks yang terdeteksi 10 | 11 | 12 | 13 | Recognize language 14 | Kenali bahasa 15 | 16 | 17 | 18 | Simplified Chinese 19 | Cina Sederhana 20 | 21 | 22 | 23 | English 24 | Bahasa Inggris 25 | 26 | 27 | 28 | Traditional Chinese 29 | Cina Tradisional 30 | 31 | 32 | 33 | Copy text 34 | Salin teks 35 | 36 | 37 | 38 | Save as TXT 39 | Simpan sebagai TXT 40 | 41 | 42 | 43 | Undo (Ctrl+Z) 44 | Batal (Ctrl+Z) 45 | 46 | 47 | 48 | Redo (Ctrl+Shift+Z) 49 | Ulang (Ctrl+Shift+Z) 50 | 51 | 52 | 53 | Recognizing 54 | Mengenali 55 | 56 | 57 | 58 | Copied 59 | Tersalin 60 | 61 | 62 | 63 | QObject 64 | 65 | 66 | OCR Tool 67 | Alat OCR 68 | 69 | 70 | 71 | ResultTextView 72 | 73 | 74 | Copy 75 | Salin 76 | 77 | 78 | 79 | Cut 80 | Potong 81 | 82 | 83 | 84 | Select All 85 | Pilih Semua 86 | 87 | 88 | 89 | Paste 90 | Tempel 91 | 92 | 93 | 94 | Widget 95 | 96 | 97 | Tips: The clearer the image is, the more accurate the text is 98 | Tips: Semakin jelas gambar, semakin akurat teksnya 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ja.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | テキストが認識されませんでした 8 | 9 | 10 | 11 | Recognize language 12 | 認識言語 13 | 14 | 15 | 16 | Simplified Chinese 17 | 簡体中国語 18 | 19 | 20 | 21 | English 22 | 英語 23 | 24 | 25 | 26 | Traditional Chinese 27 | 繫体中国語 28 | 29 | 30 | 31 | Copy text 32 | テキストをコピー 33 | 34 | 35 | 36 | Save as TXT 37 | TXTで保存 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | 元に戻す (Ctrl+Z) 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | やり直す (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | 52 | Recognizing 53 | 認識中 54 | 55 | 56 | 57 | Copied 58 | コピーしました 59 | 60 | 61 | 62 | QObject 63 | 64 | 65 | OCR Tool 66 | OCRツール 67 | 68 | 69 | 70 | ResultTextView 71 | 72 | 73 | Copy 74 | コピー 75 | 76 | 77 | 78 | Cut 79 | 切り取り 80 | 81 | 82 | 83 | Select All 84 | すべて選択 85 | 86 | 87 | 88 | Paste 89 | 貼り付け 90 | 91 | 92 | 93 | Widget 94 | 95 | 96 | Tips: The clearer the image is, the more accurate the text is 97 | ヒント: 画像が鮮明なほど認識制度が高くなります 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_km_KH.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | មិនមានអក្សរណាមួយត្រូវបានស្គាល់ 8 | 9 | 10 | 11 | Copy text 12 | ថតអក្សរ 13 | 14 | 15 | 16 | Save as TXT 17 | រក្សាទុកជាប្រភេទ TXT 18 | 19 | 20 | 21 | Recognizing 22 | កំពុងស្គាល់ 23 | 24 | 25 | 26 | Copied 27 | បានថត 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | ឧបករណ៍ OCR 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | ថត 44 | 45 | 46 | 47 | Cut 48 | កាត់ 49 | 50 | 51 | 52 | Select All 53 | ជ្រើសរើសទាំងអស់ 54 | 55 | 56 | 57 | Paste 58 | ត្រឡប់ 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | ប្រយោគ៖ ការបង្ហាញរូបភាពដែលច្បាស់លាស់នៅក្នុងអំឡុងពេលការស្គាល់អក្សរនឹងបានត្រឹមត្រូវបានប្រើប្រាស់យ៉ាងខ្លាំប្រាធ់។ 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_kn_IN.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | ಟೆಕ್ಸ್ ಗುರುತಿಸಲಾಗಿಲ್ಲ 8 | 9 | 10 | 11 | Copy text 12 | ಟೆಕ್ಸ್ ಕಾಪಿ ಮಾಡಿ 13 | 14 | 15 | 16 | Save as TXT 17 | TXT ರೂಪದಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ 18 | 19 | 20 | 21 | Recognizing 22 | ಗುರುತಿಸುತ್ತಿದೆ 23 | 24 | 25 | 26 | Copied 27 | ಕಾಪಿ ಮಾಡಲಾಗಿದೆ 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR ಸಾಧನ 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | ಕಾಪಿ 44 | 45 | 46 | 47 | Cut 48 | ಕತ್ತಿ 49 | 50 | 51 | 52 | Select All 53 | ಪೂರ್ತಿ ಆಯ್ಕೆ 54 | 55 | 56 | 57 | Paste 58 | ಪೇಸ್ಟ್ 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | ಸಲಹೆ: ಇಮೇಜ್ ಕೆಲವು ಸ್ಪಷ್ಟವಾದಂತೆ, ಟೆಕ್ಸ್ ಅದ್ಭುತವಾಗಿರುತ್ತದೆ 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ko.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | 인식된 텍스트가 없습니다 8 | 9 | 10 | 11 | Recognize language 12 | 언어 인식 13 | 14 | 15 | 16 | Simplified Chinese 17 | 간체 중국어 18 | 19 | 20 | 21 | English 22 | 영어 23 | 24 | 25 | 26 | Traditional Chinese 27 | 繁체 중국어 28 | 29 | 30 | 31 | Copy text 32 | 텍스트 복사 33 | 34 | 35 | 36 | Save as TXT 37 | TXT로 저장 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | 실행 취소 (Ctrl+Z) 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | 다시 실행 (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | Recognizing 52 | 인식 중 53 | 54 | 55 | 56 | Copied 57 | 복사됨 58 | 59 | 60 | 61 | QObject 62 | 63 | 64 | OCR Tool 65 | OCR 도구 66 | 67 | 68 | 69 | ResultTextView 70 | 71 | 72 | Copy 73 | 복사 74 | 75 | 76 | 77 | Cut 78 | 자르기 79 | 80 | 81 | 82 | Select All 83 | 모두 선택 84 | 85 | 86 | 87 | Paste 88 | 붙여넣기 89 | 90 | 91 | 92 | Widget 93 | 94 | 95 | Tips: The clearer the image is, the more accurate the text is 96 | 팁: 이미지가 선명할수록 텍스트가 더 정확합니다. 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ku.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | هیچ کرکه یو نەدەیە 8 | 9 | 10 | 11 | Copy text 12 | تەکسی کۆپی کەویە 13 | 14 | 15 | 16 | Save as TXT 17 | بە TXT چاپ کەویە 18 | 19 | 20 | 21 | Recognizing 22 | تەکسی دەکەویە 23 | 24 | 25 | 26 | Copied 27 | کۆپی کەویە 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | ئەمەکە چاپ کردنەوە 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | کۆپی کەویە 44 | 45 | 46 | 47 | Cut 48 | کات کەویە 49 | 50 | 51 | 52 | Select All 53 | هەموو چاپ کەویە 54 | 55 | 56 | 57 | Paste 58 | پەسە کەویە 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | تەپس: ئەگەر چەمە گەورەتر بێت، تەکسی تەواوتر بێت 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ku_IQ.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | هیچ متنی نەدۆزیت 8 | 9 | 10 | 11 | Copy text 12 | متن کۆپ کەویت 13 | 14 | 15 | 16 | Save as TXT 17 | بە TXT پارچە کەویت 18 | 19 | 20 | 21 | Recognizing 22 | دۆزینەویت 23 | 24 | 25 | 26 | Copied 27 | کۆپ کەویت 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | ئەرەبیکرەویت 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | کۆپ کەویت 44 | 45 | 46 | 47 | Cut 48 | پارچە کەویت 49 | 50 | 51 | 52 | Select All 53 | هەموو نووسەرەویت 54 | 55 | 56 | 57 | Paste 58 | چاپ کەویت 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | تەپس: ئەگەر وێدەیەک بەتەنەکەریتەوە بەکارهێنریتەوە، متنەکە بەتەنەکەریتەوە بەکارهێنریتەوە 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ky.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Мәтін танилмады 8 | 9 | 10 | 11 | Copy text 12 | Мәтін көчөрөө 13 | 14 | 15 | 16 | Save as TXT 17 | TXT форматына сақлау 18 | 19 | 20 | 21 | Recognizing 22 | Танилды 23 | 24 | 25 | 26 | Copied 27 | Көчөрүү 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR ыңгай 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Көчөрөө 44 | 45 | 46 | 47 | Cut 48 | Жылыҡтау 49 | 50 | 51 | 52 | Select All 53 | Барлығын таңлоо 54 | 55 | 56 | 57 | Paste 58 | Көпкөрөө 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Мәлүмәт: Көршеңгәрәк күрүнгән сурәт, мәтінге үлкән дәлдәләк болар 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ky@Arab.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | 8 | 9 | 10 | 11 | Copy text 12 | 13 | 14 | 15 | 16 | Save as TXT 17 | 18 | 19 | 20 | 21 | 22 | Recognizing 23 | 24 | 25 | 26 | 27 | Copied 28 | 29 | 30 | 31 | 32 | QObject 33 | 34 | 35 | OCR Tool 36 | 37 | 38 | 39 | 40 | ResultTextView 41 | 42 | 43 | Copy 44 | 45 | 46 | 47 | 48 | Cut 49 | 50 | 51 | 52 | 53 | Select All 54 | 55 | 56 | 57 | 58 | Paste 59 | 60 | 61 | 62 | 63 | Widget 64 | 65 | 66 | Tips: The clearer the image is, the more accurate the text is 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_lt.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Nerakta tekstas 8 | 9 | 10 | 11 | Recognize language 12 | Raskite kalbą 13 | 14 | 15 | 16 | Simplified Chinese 17 | ,egu kalba 18 | 19 | 20 | 21 | English 22 | Anglų kalba 23 | 24 | 25 | 26 | Traditional Chinese 27 | Tųri Egų kalba 28 | 29 | 30 | 31 | Copy text 32 | Kopijuoti tekstą 33 | 34 | 35 | 36 | Save as TXT 37 | Išsaugoti kaip TXT 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | Atšaukti (Ctrl+Z 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | Atkurti (Ctrl+Shift+Z 48 | 49 | 50 | 51 | 52 | Recognizing 53 | Raskam 54 | 55 | 56 | 57 | Copied 58 | Kopijuotas 59 | 60 | 61 | 62 | QObject 63 | 64 | 65 | OCR Tool 66 | OCR įrankis 67 | 68 | 69 | 70 | ResultTextView 71 | 72 | 73 | Copy 74 | Kopijuoti 75 | 76 | 77 | 78 | Cut 79 | Iškirpti 80 | 81 | 82 | 83 | Select All 84 | Pasirinkti viską 85 | 86 | 87 | 88 | Paste 89 | Įklijuoti 90 | 91 | 92 | 93 | Widget 94 | 95 | 96 | Tips: The clearer the image is, the more accurate the text is 97 | Pamoko: Žiūros geriau, tekstas geriau 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ml.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | എന്തെങ്കിലും പാലിച്ചിട്ടില്ല 8 | 9 | 10 | 11 | Copy text 12 | ടെക്സ്റ്റ് കോപ്പി 13 | 14 | 15 | 16 | Save as TXT 17 | TXT ആകാരത്തിൽ സേവ് ചെയ്യുക 18 | 19 | 20 | 21 | Recognizing 22 | ഓഫ് റെകെഗ്നിസ് 23 | 24 | 25 | 26 | Copied 27 | കോപ്പി ചെയ്തിട്ടുണ്ട് 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR ടൂൾ 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | കോപ്പി 44 | 45 | 46 | 47 | Cut 48 | കട്ട് 49 | 50 | 51 | 52 | Select All 53 | എല്ലാവരെയും തിരഞ്ഞെടുക്കുക 54 | 55 | 56 | 57 | Paste 58 | പേസ്റ്റ് 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | ടിപ്പ്: ചിത്രം കൂടുതൽ വ്യക്തമാണെങ്കിൽ, ടെക്സ്റ്റ് കൂടുതൽ ശരിയായിരിക്കും 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_mn.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Текст олдоггүй 8 | 9 | 10 | 11 | Copy text 12 | Текст хураах 13 | 14 | 15 | 16 | Save as TXT 17 | TXT-р хадгалах 18 | 19 | 20 | 21 | Recognizing 22 | Онлойх 23 | 24 | 25 | 26 | Copied 27 | Хураагдсан 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR-ын үзүүлбэр 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Хураах 44 | 45 | 46 | 47 | Cut 48 | Хурааж устгах 49 | 50 | 51 | 52 | Select All 53 | Бүхийг сонгох 54 | 55 | 56 | 57 | Paste 58 | Нууцах 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Албан ёсны: Өгөж байгаа үзүүлбэрийн тодорхойлолт нь текстийн тодорхойлолтыг нэмэгдүүлнэ 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_mr.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | कोणताही टेक्स्ट ओळखला गेलेला नाही 8 | 9 | 10 | 11 | Copy text 12 | टेक्स्ट कॉपी करा 13 | 14 | 15 | 16 | Save as TXT 17 | TXT म्हणून सेवा करा 18 | 19 | 20 | 21 | Recognizing 22 | ओळखत आहे 23 | 24 | 25 | 26 | Copied 27 | कॉपी केले 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR उपकरण 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | कॉपी 44 | 45 | 46 | 47 | Cut 48 | कट 49 | 50 | 51 | 52 | Select All 53 | सर्व निवडा 54 | 55 | 56 | 57 | Paste 58 | पेस्ट 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | सूचना: छाया जसा निर्माण होत आहे, तेनुसार टेक्स्ट तसा निर्माण होत आहे 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ne.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MainWidget 6 | 7 | 8 | No text recognized 9 | कुनै पनि पाठ चिनियो 10 | 11 | 12 | 13 | Recognize language 14 | भाषा चिनियो 15 | 16 | 17 | 18 | Simplified Chinese 19 | सरलीकृत चीनी 20 | 21 | 22 | 23 | English 24 | अंग्रेजी 25 | 26 | 27 | 28 | Traditional Chinese 29 | पारंपरिक चीनी 30 | 31 | 32 | 33 | Copy text 34 | पाठ काट्नु 35 | 36 | 37 | 38 | Save as TXT 39 | TXT मा सेभ गर्नु 40 | 41 | 42 | 43 | Undo (Ctrl+Z) 44 | पुन: गर्नु (Ctrl+Z) 45 | 46 | 47 | 48 | Redo (Ctrl+Shift+Z) 49 | पुन: गर्नु (Ctrl+Shift+Z) 50 | 51 | 52 | 53 | Recognizing 54 | चिनिरहेको 55 | 56 | 57 | 58 | Copied 59 | काटियो 60 | 61 | 62 | 63 | QObject 64 | 65 | 66 | OCR Tool 67 | OCR टोल 68 | 69 | 70 | 71 | ResultTextView 72 | 73 | 74 | Copy 75 | काट्नु 76 | 77 | 78 | 79 | Cut 80 | काट्नु 81 | 82 | 83 | 84 | Select All 85 | सबै चयन गर्नु 86 | 87 | 88 | 89 | Paste 90 | पेस्ट गर्नु 91 | 92 | 93 | 94 | Widget 95 | 96 | 97 | Tips: The clearer the image is, the more accurate the text is 98 | सुझाव: छवि ज्यादा स्पष्ट हुन त्यो पाठ ज्यादा सटीक हुन्छ 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /translations/deepin-ocr_pam.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Wala nang teksto nga nakakadto 8 | 9 | 10 | 11 | Copy text 12 | Kopyahon an teksto 13 | 14 | 15 | 16 | Save as TXT 17 | I-save bilang TXT 18 | 19 | 20 | 21 | Recognizing 22 | Nakakadto 23 | 24 | 25 | 26 | Copied 27 | Kopyahon na 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | Tool para han OCR 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Kopyahon 44 | 45 | 46 | 47 | Cut 48 | I-cut 49 | 50 | 51 | 52 | Select All 53 | Pili an lahat 54 | 55 | 56 | 57 | Paste 58 | I-paste 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Tips: Ang mas malinaw an imahe, ang mas tumpay an teksto 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_pt.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Texto não reconhecido 8 | 9 | 10 | 11 | Recognize language 12 | Reconhecer idioma 13 | 14 | 15 | 16 | Simplified Chinese 17 | Chinês Simplificado 18 | 19 | 20 | 21 | English 22 | Inglês 23 | 24 | 25 | 26 | Traditional Chinese 27 | Chinês Tradicional 28 | 29 | 30 | 31 | Copy text 32 | Copiar texto 33 | 34 | 35 | 36 | Save as TXT 37 | Guardar como TXT 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | Desfazer (Ctrl+Z) 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | Refazer (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | Recognizing 52 | Analisando 53 | 54 | 55 | 56 | Copied 57 | Copiado 58 | 59 | 60 | 61 | QObject 62 | 63 | 64 | OCR Tool 65 | Ferramenta OCR 66 | 67 | 68 | 69 | ResultTextView 70 | 71 | 72 | Copy 73 | Copiar 74 | 75 | 76 | 77 | Cut 78 | Cortar 79 | 80 | 81 | 82 | Select All 83 | Selecionar tudo 84 | 85 | 86 | 87 | Paste 88 | Colar 89 | 90 | 91 | 92 | Widget 93 | 94 | 95 | Tips: The clearer the image is, the more accurate the text is 96 | Dica: Quanto mais nítida for a imagem, melhor será a precisão de reconhecimento de texto 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ro.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Niciun text recunoscut 8 | 9 | 10 | 11 | Copy text 12 | Copiați textul 13 | 14 | 15 | 16 | Save as TXT 17 | Salvați ca TXT 18 | 19 | 20 | 21 | Recognizing 22 | Recunoaște 23 | 24 | 25 | 26 | Copied 27 | Copiat 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | Unelte OCR 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Copiere 44 | 45 | 46 | 47 | Cut 48 | Taie 49 | 50 | 51 | 52 | Select All 53 | Selectați tot 54 | 55 | 56 | 57 | Paste 58 | Lipește 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Sfat: Imaginile mai clare oferă un text mai precis 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_sc.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | لا نص تم التعرف عليه 8 | 9 | 10 | 11 | Copy text 12 | نسخ النص 13 | 14 | 15 | 16 | Save as TXT 17 | حفظ كTXT 18 | 19 | 20 | 21 | Recognizing 22 | جارٍ التعرف 23 | 24 | 25 | 26 | Copied 27 | تم النسخ 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | أداة التعرف على النص 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | نسخ 44 | 45 | 46 | 47 | Cut 48 | قص 49 | 50 | 51 | 52 | Select All 53 | اختر الكل 54 | 55 | 56 | 57 | Paste 58 | لصق 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | نصيحة: كلما كانت الصورة أكثر وضوحًا، زادت دقة النص 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_si.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | ई टेक्स्ट අස්විය 8 | 9 | 10 | 11 | Copy text 12 | ටෙක්ස් කොපි කරන්න 13 | 14 | 15 | 16 | Save as TXT 17 | TXT වීදියෙන් ගබඩා කරන්න 18 | 19 | 20 | 21 | Recognizing 22 | සොයුම් කරමින් තිබේ 23 | 24 | 25 | 26 | Copied 27 | කොපි කරන්න 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR ප්‍රකාශනය 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | පිටපත් 44 | 45 | 46 | 47 | Cut 48 | පිටවන්න 49 | 50 | 51 | 52 | Select All 53 | සියලුම තේරුම් ගනන්න 54 | 55 | 56 | 57 | Paste 58 | අලවන්න 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | උපදෙස්: මිනිසුන් වීදිය ඉතා අඩු තරම් අංශුක නම්, මිනිසුන් තේරුම් ගන්නේ ඉතා අඩු තරම් අංශුක වේ 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_sl.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Nista je oznakovano 8 | 9 | 10 | 11 | Recognize language 12 | Označi jezik 13 | 14 | 15 | 16 | Simplified Chinese 17 | Poostopljeno češko 18 | 19 | 20 | 21 | English 22 | Angleški 23 | 24 | 25 | 26 | Traditional Chinese 27 | Staročesko češko 28 | 29 | 30 | 31 | Copy text 32 | Kopiraj tekst 33 | 34 | 35 | 36 | Save as TXT 37 | Shrani kot TXT 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | Povrni nazad (Ctrl+Z 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | Ponovno izvajaj (Ctrl+Shift+Z 48 | 49 | 50 | 51 | 52 | Recognizing 53 | Označevanje 54 | 55 | 56 | 57 | Copied 58 | Kopirano 59 | 60 | 61 | 62 | QObject 63 | 64 | 65 | OCR Tool 66 | Nastavitve OCR 67 | 68 | 69 | 70 | ResultTextView 71 | 72 | 73 | Copy 74 | Kopiraj 75 | 76 | 77 | 78 | Cut 79 | Izreži 80 | 81 | 82 | 83 | Select All 84 | Izberi vse 85 | 86 | 87 | 88 | Paste 89 | Vključi 90 | 91 | 92 | 93 | Widget 94 | 95 | 96 | Tips: The clearer the image is, the more accurate the text is 97 | Pomembno:越清晰的图像,文字识别越准确 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_sr.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Нема препознатог текста 8 | 9 | 10 | 11 | Recognize language 12 | Прегледај језик 13 | 14 | 15 | 16 | Simplified Chinese 17 | Једноставни кинески 18 | 19 | 20 | 21 | English 22 | Англијански 23 | 24 | 25 | 26 | Traditional Chinese 27 | Традиционални кинески 28 | 29 | 30 | 31 | Copy text 32 | Копирај текст 33 | 34 | 35 | 36 | Save as TXT 37 | Сачувај као ТХТ 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | Поништи (Ctrl+Z) 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | Понови (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | Recognizing 52 | Препознавање 53 | 54 | 55 | 56 | Copied 57 | Копирано 58 | 59 | 60 | 61 | QObject 62 | 63 | 64 | OCR Tool 65 | ОЦР алат 66 | 67 | 68 | 69 | ResultTextView 70 | 71 | 72 | Copy 73 | Копирај 74 | 75 | 76 | 77 | Cut 78 | Исеци 79 | 80 | 81 | 82 | Select All 83 | Изабери све 84 | 85 | 86 | 87 | Paste 88 | Убаци 89 | 90 | 91 | 92 | Widget 93 | 94 | 95 | Tips: The clearer the image is, the more accurate the text is 96 | Савет: Што је слика јаснија, текст је тачнији 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_sw.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Hakikati siku kujitambua 8 | 9 | 10 | 11 | Copy text 12 | Kopia kifungu 13 | 14 | 15 | 16 | Save as TXT 17 | Tuma kama TXT 18 | 19 | 20 | 21 | Recognizing 22 | Kutambua 23 | 24 | 25 | 26 | Copied 27 | Kilichopiaji 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | Vipengele ya OCR 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | Kopia 44 | 45 | 46 | 47 | Cut 48 | Vuta 49 | 50 | 51 | 52 | Select All 53 | Jisikia wote 54 | 55 | 56 | 57 | Paste 58 | Lipisha 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | Matokeo: Sembe kubwa kifungu, kifungu kubwa kujitambua 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ta.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | எந்த பார்க்கப்பட்ட தொடர்பு கொண்ட பொருளும் இல்லை 8 | 9 | 10 | 11 | Copy text 12 | தொடர்பு கொண்ட பொருளை பிரித்தெடுக்கவும் 13 | 14 | 15 | 16 | Save as TXT 17 | TXT ஆக மாற்றவும் 18 | 19 | 20 | 21 | Recognizing 22 | உறுதிப்படுத்தல் 23 | 24 | 25 | 26 | Copied 27 | பிரித்தெடுக்கப்பட்டது 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR கரு 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | கொடு 44 | 45 | 46 | 47 | Cut 48 | க்கொடு 49 | 50 | 51 | 52 | Select All 53 | அனைத்தையும் தேர்ந்தெடுக்கவும் 54 | 55 | 56 | 57 | Paste 58 | செல்லவும் 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | முக்கியத்துவமுள்ள குறிப்பு: படத்தின் தெளிவு அதிகரித்தால், பொருள் அதிகமாக உறுதிப்படுத்தப்படும் 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_th.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | ไม่มีข้อความที่ถูกจดจำ 8 | 9 | 10 | 11 | Copy text 12 | คัดลอกข้อความ 13 | 14 | 15 | 16 | Save as TXT 17 | บันทึกเป็นไฟล์ TXT 18 | 19 | 20 | 21 | Recognizing 22 | กำลังจดจำ 23 | 24 | 25 | 26 | Copied 27 | คัดลอกแล้ว 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | เครื่องมือ OCR 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | คัดลอก 44 | 45 | 46 | 47 | Cut 48 | ตัด 49 | 50 | 51 | 52 | Select All 53 | เลือกทั้งหมด 54 | 55 | 56 | 57 | Paste 58 | วาง 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | คำแนะนำ: ยิ่งภาพชัดเจน ข้อความที่จดจำก็จะยิ่งแม่นยำ 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_tzm.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MainWidget 6 | 7 | 8 | No text recognized 9 | لا نص معرّف 10 | 11 | 12 | 13 | Recognize language 14 | اعترف باللغة 15 | 16 | 17 | 18 | Simplified Chinese 19 | الصينية البسيطة 20 | 21 | 22 | 23 | English 24 | الإنجليزية 25 | 26 | 27 | 28 | Traditional Chinese 29 | الصينية التقليدية 30 | 31 | 32 | 33 | Copy text 34 | نسخ النص 35 | 36 | 37 | 38 | Save as TXT 39 | احفظ كـ TXT 40 | 41 | 42 | 43 | Undo (Ctrl+Z) 44 | الغاء (Ctrl+Z) 45 | 46 | 47 | 48 | Redo (Ctrl+Shift+Z) 49 | إعادة (Ctrl+Shift+Z) 50 | 51 | 52 | 53 | Recognizing 54 | مُعرَّف 55 | 56 | 57 | 58 | Copied 59 | نسخ 60 | 61 | 62 | 63 | QObject 64 | 65 | 66 | OCR Tool 67 | أداة OCR 68 | 69 | 70 | 71 | ResultTextView 72 | 73 | 74 | Copy 75 | نسخ 76 | 77 | 78 | 79 | Cut 80 | قص 81 | 82 | 83 | 84 | Select All 85 | اختر الكل 86 | 87 | 88 | 89 | Paste 90 | لصق 91 | 92 | 93 | 94 | Widget 95 | 96 | 97 | Tips: The clearer the image is, the more accurate the text is 98 | تلميح: كلما كانت الصورة أوضح، كانت النص أكثر دقة 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /translations/deepin-ocr_ur.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | کوئی ٹیکسٹ شناخت نہ ہو سکا 8 | 9 | 10 | 11 | Copy text 12 | ٹیکسٹ کا کپی کریں 13 | 14 | 15 | 16 | Save as TXT 17 | TXT کے طور پر سیو کریں 18 | 19 | 20 | 21 | Recognizing 22 | شناخت کر رہے ہیں 23 | 24 | 25 | 26 | Copied 27 | کپی کر دیا گیا 28 | 29 | 30 | 31 | QObject 32 | 33 | 34 | OCR Tool 35 | OCR ٹول 36 | 37 | 38 | 39 | ResultTextView 40 | 41 | 42 | Copy 43 | کپی 44 | 45 | 46 | 47 | Cut 48 | کٹ 49 | 50 | 51 | 52 | Select All 53 | سیلکٹ ہر چیز 54 | 55 | 56 | 57 | Paste 58 | پیسٹ 59 | 60 | 61 | 62 | Widget 63 | 64 | 65 | Tips: The clearer the image is, the more accurate the text is 66 | ٹیپس: تصویر کچھ واضح تر ہو گی، ٹیکسٹ کچھ زیادہ صحیح ہو گی 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /translations/deepin-ocr_vi.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWidget 4 | 5 | 6 | No text recognized 7 | Không nhận dạng được văn bản 8 | 9 | 10 | 11 | Recognize language 12 | Nhận diện ngôn ngữ 13 | 14 | 15 | 16 | Simplified Chinese 17 | Tiếng Trung giản thể 18 | 19 | 20 | 21 | English 22 | Tiếng Anh 23 | 24 | 25 | 26 | Traditional Chinese 27 | Tiếng Trung truyền thống 28 | 29 | 30 | 31 | Copy text 32 | Sao chép văn bản 33 | 34 | 35 | 36 | Save as TXT 37 | Lưu dưới dạng TXT 38 | 39 | 40 | 41 | Undo (Ctrl+Z) 42 | Hoàn tác (Ctrl+Z) 43 | 44 | 45 | 46 | Redo (Ctrl+Shift+Z) 47 | Làm lại (Ctrl+Shift+Z) 48 | 49 | 50 | 51 | Recognizing 52 | Đang nhận dạng 53 | 54 | 55 | 56 | Copied 57 | Đã sao chép 58 | 59 | 60 | 61 | QObject 62 | 63 | 64 | OCR Tool 65 | Công cụ OCR 66 | 67 | 68 | 69 | ResultTextView 70 | 71 | 72 | Copy 73 | Sao chép 74 | 75 | 76 | 77 | Cut 78 | Cắt 79 | 80 | 81 | 82 | Select All 83 | Chọn tất cả 84 | 85 | 86 | 87 | Paste 88 | Dán 89 | 90 | 91 | 92 | Widget 93 | 94 | 95 | Tips: The clearer the image is, the more accurate the text is 96 | Lời khuyên:Ảnh rõ nét hơn sẽ có văn bản chính xác hơn 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /translations/deepin-ocr_zh_CN.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MainWidget 6 | 7 | 8 | No text recognized 9 | 未识别到文字 10 | 11 | 12 | 13 | Recognize language 14 | 识别语言 15 | 16 | 17 | 18 | Simplified Chinese 19 | 简体中文 20 | 21 | 22 | 23 | English 24 | 英文 25 | 26 | 27 | 28 | Traditional Chinese 29 | 繁体中文 30 | 31 | 32 | 33 | Copy text 34 | 复制文字 35 | 36 | 37 | 38 | Save as TXT 39 | 保存为TXT 40 | 41 | 42 | 43 | Undo (Ctrl+Z) 44 | 撤销 (Ctrl+Z) 45 | 46 | 47 | 48 | Redo (Ctrl+Shift+Z) 49 | 重做 (Ctrl+Shift+Z) 50 | 51 | 52 | 53 | 54 | Recognizing 55 | 正在识别 56 | 57 | 58 | 59 | Copied 60 | 已复制 61 | 62 | 63 | 64 | QObject 65 | 66 | 67 | OCR Tool 68 | 图文识别工具 69 | 70 | 71 | 72 | ResultTextView 73 | 74 | 75 | Copy 76 | 复制 77 | 78 | 79 | 80 | Cut 81 | 剪切 82 | 83 | 84 | 85 | Select All 86 | 全选 87 | 88 | 89 | 90 | Paste 91 | 粘贴 92 | 93 | 94 | 95 | Widget 96 | 97 | 98 | Tips: The clearer the image is, the more accurate the text is 99 | 温馨提示:图像越简洁清晰,识别越准确 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /translations/deepin-ocr_zh_HK.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MainWidget 6 | 7 | 8 | No text recognized 9 | 未識別到文字 10 | 11 | 12 | 13 | Recognize language 14 | 識別語言 15 | 16 | 17 | 18 | Simplified Chinese 19 | 簡體中文 20 | 21 | 22 | 23 | English 24 | 英文 25 | 26 | 27 | 28 | Traditional Chinese 29 | 繁體中文 30 | 31 | 32 | 33 | Copy text 34 | 複製文字 35 | 36 | 37 | 38 | Save as TXT 39 | 保存為TXT 40 | 41 | 42 | 43 | Undo (Ctrl+Z) 44 | 撤銷 (Ctrl+Z) 45 | 46 | 47 | 48 | Redo (Ctrl+Shift+Z) 49 | 重做 (Ctrl+Shift+Z) 50 | 51 | 52 | 53 | 54 | Recognizing 55 | 正在識別 56 | 57 | 58 | 59 | Copied 60 | 已複製 61 | 62 | 63 | 64 | QObject 65 | 66 | 67 | OCR Tool 68 | 圖文識別工具 69 | 70 | 71 | 72 | ResultTextView 73 | 74 | 75 | Copy 76 | 複製 77 | 78 | 79 | 80 | Cut 81 | 剪切 82 | 83 | 84 | 85 | Select All 86 | 全選 87 | 88 | 89 | 90 | Paste 91 | 黏貼 92 | 93 | 94 | 95 | Widget 96 | 97 | 98 | Tips: The clearer the image is, the more accurate the text is 99 | 溫馨提示:圖像越簡潔清晰,識別越準確 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /translations/deepin-ocr_zh_TW.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MainWidget 6 | 7 | 8 | No text recognized 9 | 未識別到文字 10 | 11 | 12 | 13 | Recognize language 14 | 識別語言 15 | 16 | 17 | 18 | Simplified Chinese 19 | 簡體中文 20 | 21 | 22 | 23 | English 24 | 英文 25 | 26 | 27 | 28 | Traditional Chinese 29 | 繁體中文 30 | 31 | 32 | 33 | Copy text 34 | 複製文字 35 | 36 | 37 | 38 | Save as TXT 39 | 儲存為TXT 40 | 41 | 42 | 43 | Undo (Ctrl+Z) 44 | 復原 (Ctrl+Z) 45 | 46 | 47 | 48 | Redo (Ctrl+Shift+Z) 49 | 重做 (Ctrl+Shift+Z) 50 | 51 | 52 | 53 | 54 | Recognizing 55 | 正在識別 56 | 57 | 58 | 59 | Copied 60 | 已複製 61 | 62 | 63 | 64 | QObject 65 | 66 | 67 | OCR Tool 68 | 圖文識別工具 69 | 70 | 71 | 72 | ResultTextView 73 | 74 | 75 | Copy 76 | 複製 77 | 78 | 79 | 80 | Cut 81 | 剪下 82 | 83 | 84 | 85 | Select All 86 | 全選 87 | 88 | 89 | 90 | Paste 91 | 貼上 92 | 93 | 94 | 95 | Widget 96 | 97 | 98 | Tips: The clearer the image is, the more accurate the text is 99 | 溫馨提示:圖像越簡潔清晰,識別越準確 100 | 101 | 102 | 103 | --------------------------------------------------------------------------------