diff --git a/PPOCRLabel/PPOCRLabel.py b/PPOCRLabel/PPOCRLabel.py index 6e5323a436dd37848293707609f1650de7c504da..5d3bf34c47c9865f02823eb6b881c7d5ef79d32b 100644 --- a/PPOCRLabel/PPOCRLabel.py +++ b/PPOCRLabel/PPOCRLabel.py @@ -35,6 +35,7 @@ import numpy as np sys.path.append(__dir__) sys.path.append(os.path.abspath(os.path.join(__dir__, '../..'))) +sys.path.append(os.path.abspath(os.path.join(__dir__, '../PaddleOCR'))) sys.path.append("..") from paddleocr import PaddleOCR @@ -390,7 +391,7 @@ class MainWindow(QMainWindow, WindowMixin): 'Ctrl+J', 'edit', u'Move and edit Boxs', enabled=False) create = action(getStr('crtBox'), self.createShape, - 'w', 'new', getStr('crtBoxDetail'), enabled=False) + 'w', 'objects', getStr('crtBoxDetail'), enabled=False) delete = action(getStr('delBox'), self.deleteSelectedShape, 'backspace', 'delete', getStr('delBoxDetail'), enabled=False) diff --git a/PPOCRLabel/libs/stringBundle.py b/PPOCRLabel/libs/stringBundle.py index 2417104425323357e3ef49feaabfcfa35fefaf00..bd0466ae6062861b612f942fd8845c0e79f2ace5 100644 --- a/PPOCRLabel/libs/stringBundle.py +++ b/PPOCRLabel/libs/stringBundle.py @@ -19,6 +19,9 @@ import sys import locale from libs.ustr import ustr +__dir__ = os.path.dirname(os.path.abspath(__file__)) # 获取本程序文件路径 +__dirpath__ = os.path.abspath(os.path.join(__dir__, '../resources/strings')) + try: from PyQt5.QtCore import * except ImportError: @@ -57,14 +60,15 @@ class StringBundle: def __createLookupFallbackList(self, localeStr): resultPaths = [] - basePath = ":/strings" + basePath = "\strings" resultPaths.append(basePath) if localeStr is not None: # Don't follow standard BCP47. Simple fallback tags = re.split('[^a-zA-Z]', localeStr) for tag in tags: lastPath = resultPaths[-1] - resultPaths.append(lastPath + '-' + tag) + resultPaths[-1] = lastPath + '-' + tag + resultPaths[-1] = __dirpath__ + resultPaths[-1] + ".properties" return resultPaths diff --git a/PPOCRLabel/libs/utils.py b/PPOCRLabel/libs/utils.py index 296f56318c53475271a1c95d97fa0e98306b87d4..161fdefb70ed688f69c0ebfa04c41b672104d076 100644 --- a/PPOCRLabel/libs/utils.py +++ b/PPOCRLabel/libs/utils.py @@ -17,6 +17,10 @@ import re import sys import cv2 import numpy as np +import os + +__dir__ = os.path.dirname(os.path.abspath(__file__)) # 获取本程序文件路径 +__iconpath__ = os.path.abspath(os.path.join(__dir__, '../resources/icons')) try: from PyQt5.QtGui import * @@ -29,9 +33,9 @@ except ImportError: def newIcon(icon, iconSize=None): if iconSize is not None: - return QIcon(QIcon(':/' + icon).pixmap(iconSize,iconSize)) + return QIcon(QIcon(__iconpath__ + "\\" + icon + ".png").pixmap(iconSize,iconSize)) else: - return QIcon(':/' + icon) + return QIcon(__iconpath__ + "\\" + icon + ".png") def newButton(text, icon=None, slot=None): diff --git a/PPOCRLabel/requirements.txt b/PPOCRLabel/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..fd3b791e7d387ddabfe01118d3492e87a4a41d4e --- /dev/null +++ b/PPOCRLabel/requirements.txt @@ -0,0 +1,11 @@ +shapely +scikit-image==0.17.2 +imgaug==0.4.0 +pyclipper +lmdb +tqdm +numpy +visualdl +python-Levenshtein +opencv-contrib-python==4.2.0.32 +PaddleOCR \ No newline at end of file diff --git a/PPOCRLabel/resources/strings/strings.properties b/PPOCRLabel/resources/strings/strings-en.properties similarity index 100% rename from PPOCRLabel/resources/strings/strings.properties rename to PPOCRLabel/resources/strings/strings-en.properties diff --git a/PPOCRLabel/setup.py b/PPOCRLabel/setup.py index 008514fd7777713eb76f900f5ea15a4366517dd8..27c612d72f55d481f7f48329cb7021b48e03eaec 100644 --- a/PPOCRLabel/setup.py +++ b/PPOCRLabel/setup.py @@ -1,139 +1,57 @@ -# Copyright (c) <2015-Present> Tzutalin -# Copyright (C) 2013 MIT, Computer Science and Artificial Intelligence Laboratory. Bryan Russell, Antonio Torralba, -# William T. Freeman. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and -# associated documentation files (the "Software"), to deal in the Software without restriction, including without -# limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the -# Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -# The above copyright notice and this permission notice shall be included in all copies or substantial portions of -# the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT -# NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -# SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -from setuptools import setup, find_packages, Command -from sys import platform as _platform -from shutil import rmtree -import sys -import os - -here = os.path.abspath(os.path.dirname(__file__)) -NAME = 'labelImg' -REQUIRES_PYTHON = '>=3.0.0' -REQUIRED_DEP = ['pyqt5', 'lxml'] -about = {} - -with open(os.path.join(here, 'libs', '__init__.py')) as f: - exec(f.read(), about) - -with open('README.rst') as readme_file: - readme = readme_file.read() - -with open('HISTORY.rst') as history_file: - history = history_file.read() - - -# OS specific settings -SET_REQUIRES = [] -if _platform == "linux" or _platform == "linux2": - # linux - print('linux') -elif _platform == "darwin": - # MAC OS X - SET_REQUIRES.append('py2app') - -required_packages = find_packages() -required_packages.append('labelImg') - -APP = [NAME + '.py'] -OPTIONS = { - 'argv_emulation': True, - 'iconfile': 'resources/icons/app.icns' -} - -class UploadCommand(Command): - """Support setup.py upload.""" - - description=readme + '\n\n' + history, - - user_options = [] - - @staticmethod - def status(s): - """Prints things in bold.""" - print('\033[1m{0}\033[0m'.format(s)) - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - try: - self.status('Removing previous builds…') - rmtree(os.path.join(here, 'dist')) - except OSError: - self.status('Fail to remove previous builds..') - pass - - self.status('Building Source and Wheel (universal) distribution…') - os.system( - '{0} setup.py sdist bdist_wheel --universal'.format(sys.executable)) - - self.status('Uploading the package to PyPI via Twine…') - os.system('twine upload dist/*') - - self.status('Pushing git tags…') - os.system('git tag -d v{0}'.format(about['__version__'])) - os.system('git tag v{0}'.format(about['__version__'])) - # os.system('git push --tags') - - sys.exit() +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from setuptools import setup +from io import open + +with open('requirements.txt', encoding="utf-8-sig") as f: + requirements = f.readlines() + requirements.append('tqdm') + + +def readme(): + with open('README.md', encoding="utf-8-sig") as f: + README = f.read() + return README setup( - app=APP, - name=NAME, - version=about['__version__'], - description="LabelImg is a graphical image annotation tool and label object bounding boxes in images", - long_description=readme + '\n\n' + history, - author="TzuTa Lin", - author_email='tzu.ta.lin@gmail.com', - url='https://github.com/tzutalin/labelImg', - python_requires=REQUIRES_PYTHON, - package_dir={'labelImg': '.'}, - packages=required_packages, - entry_points={ - 'console_scripts': [ - 'labelImg=labelImg.labelImg:main' - ] - }, + name='PPOCRLabel', + packages=['PPOCRLabel'], + package_data = {'PPOCRLabel': ['libs/*','resources/strings/*','resources/icons/*']}, + package_dir={'PPOCRLabel': ''}, include_package_data=True, - install_requires=REQUIRED_DEP, - license="MIT license", - zip_safe=False, - keywords='labelImg labelTool development annotation deeplearning', + entry_points={"console_scripts": ["PPOCRLabel= PPOCRLabel.PPOCRLabel:main"]}, + version='1.0.0', + install_requires=requirements, + license='Apache License 2.0', + description='Awesome OCR toolkits based on PaddlePaddle (8.6M ultra-lightweight pre-trained model, support training and deployment among server, mobile, embeded and IoT devices', + long_description=readme(), + long_description_content_type='text/markdown', + url='https://github.com/PaddlePaddle/PaddleOCR', + download_url='https://github.com/PaddlePaddle/PaddleOCR.git', + keywords=[ + 'ocr textdetection textrecognition paddleocr crnn east star-net rosetta ocrlite db chineseocr chinesetextdetection chinesetextrecognition' + ], classifiers=[ - 'Development Status :: 5 - Production/Stable', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: MIT License', - 'Natural Language :: English', + 'Intended Audience :: Developers', 'Operating System :: OS Independent', + 'Natural Language :: Chinese (Simplified)', 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - ], - package_data={'data/predefined_classes.txt': ['data/predefined_classes.txt']}, - options={'py2app': OPTIONS}, - setup_requires=SET_REQUIRES, - # $ setup.py publish support. - cmdclass={ - 'upload': UploadCommand, - } -) + 'Programming Language :: Python :: 3.7', 'Topic :: Utilities' + ], ) \ No newline at end of file