Skip to content

Commit

Permalink
Support: ZXing
Browse files Browse the repository at this point in the history
  • Loading branch information
Chandler Lu committed Jan 16, 2020
1 parent b4fa4dd commit 5de22e1
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 28 deletions.
50 changes: 34 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,18 @@
[查看更新历史](https://github.com/Chandler-Lu/alfred-ocr/wiki/Update-History)

### 4.1 (2020-01-14 14:22)
### 4.2 (2020-01-16 12:54)

- 支持表格文字识别(未进行输出优化,多表格识别存在问题,等待优化)
- 提前祝大家春节快乐,工作顺利,学习进步!
- 鉴于百度更改了二维码识别收费方案,触发关键词 `ooq` 替换为由开源模块 [ZXing](https://github.com/dlenski/python-zxing) 的二维码识别,原有百度二维码识别的触发方式更改为 `ooqb`

## 能力

- 离线 OCR (CNOCR)
- 通用 OCR (百度,腾讯优图,Google)
- 二维码识别 (百度)
- 二维码识别 (百度,ZXing)
- 表格文字识别 (百度)
- 文本翻译 (彩云小译)
- 多文件识别 (百度)
- 文本翻译 (彩云小译)

## 使用(必看!!)

Expand All @@ -51,13 +50,19 @@

### CNOCR

```python
``` bash
pip install cnocr
```

### ZXing (QR code Offline)

``` bash
pip install zxing
```

### 其他

```python
``` bash
pip install requests
```

Expand All @@ -78,8 +83,8 @@ pip install requests
#### 触发

1. 通用 OCR:快捷键 ctrl+v 触发截图选框,或截图至剪贴板后使用关键词 oob (baidu) 触发。
2. 二维码识别:截图后使用关键词 ooq (qr code) 触发。
3. 表格文字识别:截图后使用关键词 ooe (excel) 触发 (本来应当使用 oof (form) 触发的,但该关键词已被多文件识别占用),识别后可直接复制至 Excel。
2. 二维码识别:截图后使用关键词 ooqb (qr baidu) 触发。
3. 表格文字识别:截图后使用关键词 ooe (excel) 触发,识别后可直接复制至 Excel。
4. 多文件识别:finder 中选中需要识别的图片并使用关键词 oof (file) 触发。

![File_OCR](examples/file_ocr.png)
Expand All @@ -88,8 +93,9 @@ pip install requests

1. 具备中英文识别,标点符号将被替换为对应语言下的符号。
2. 具备对出版物的段落优化能力,但对于非常规文本的分段能力并不是很好,等待进一步优化。
3. 自带一个测试 Token,不保证可用性,需要稳定可自行申请。
4. 最大支持单个 4MB 的图片。
3. 二维码识别支持同时识别多个。
4. 自带一个测试 Token,不保证可用性,需要稳定可自行申请。
5. 最大支持单个 4MB 的图片。

### [Tencent Youtu (腾讯优图)](https://ai.qq.com/product/ocr.shtml#common)

Expand Down Expand Up @@ -120,6 +126,17 @@ pip install requests

1. Google OCR 为收费业务,需绑定信用卡,故本项目不带测试 Token,需要自行申请。

### [ZXing](https://github.com/dlenski/python-zxing) (离线二维码识别)

#### 触发

1. 截图至剪贴板后使用关键词 ooq (qr code) 触发。

#### 说明

1. 一切安装方法请依据该项目 [README](https://github.com/dlenski/python-zxing/blob/master/README.md)
2. 仅支持单个二维码识别。

### [ColorfulClouds (彩云小译)](https://fanyi.caiyunapp.com/#/api)

#### 触发
Expand All @@ -146,14 +163,15 @@ pip install requests
- [x] 彩云小译
- [x] 多文件识别
- [x] 表格识别
- [ ] 截图翻译
- [x] 二维码识别
- [x] 文本翻译
- [ ] 段落优化
- [ ] 截图翻译
- [x] 文本翻译

## 致谢

1. 离线识别方案:[breezedeus/cnocr](https://github.com/breezedeus/cnocr)
2. 系统截屏的方案:[ginfuru/alfred-screen-capture](https://github.com/ginfuru/alfred-screen-capture)
3. Workflow 的设计方案:[oott123/alfred-clipboard-ocr](https://github.com/oott123/alfred-clipboard-ocr)
4. 感谢下列用户对本项目的贡献:[Elvis Cai](https://github.com/elviscai)
2. 离线二维码识别方案:[dlenski/python-zxing](https://github.com/dlenski/python-zxing)
3. 系统截屏的方案:[ginfuru/alfred-screen-capture](https://github.com/ginfuru/alfred-screen-capture)
4. Workflow 的设计方案:[oott123/alfred-clipboard-ocr](https://github.com/oott123/alfred-clipboard-ocr)
5. 感谢下列用户对本项目的贡献:[Elvis Cai](https://github.com/elviscai)
51 changes: 39 additions & 12 deletions src/ocr_bgt.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'''
@Description: ocr_baidu_google_tencent
@version: 3.1
@version: 3.3
@Author: Chandler Lu
@Date: 2019-11-26 23:52:36
@LastEditTime : 2020-01-14 14:16:32
@LastEditTime : 2020-01-16 12:51:51
'''
# -*- coding: UTF-8 -*-
import sys
Expand All @@ -22,7 +22,7 @@
from urllib import parse


OCR_SELECT = sys.argv[1]
OCR_SELECT = int(sys.argv[1])
PIC_PATH = sys.argv[2]
FOLDER_PATH = '/private/tmp/com.chandler.alfredocr'

Expand Down Expand Up @@ -274,6 +274,21 @@ def multi_file_ocr():
print('\n')


'''
Offline Barcode Decode (using !(zxing)[https://github.com/dlenski/python-zxing])
'''


def barcode_decode(pic_path):
import zxing
reader = zxing.BarCodeReader()
barcode = reader.decode(pic_path)
if barcode is not None:
print(barcode.parsed, end='')
else:
print('Empty QR Code!')


'''
Output
'''
Expand Down Expand Up @@ -447,22 +462,34 @@ def remove_pic(pic_path):


if __name__ == "__main__":
if (OCR_SELECT == 'baidu'):
'''
1: baidu
2: baidu_qrcode
3: baidu_form
4: tencent
5: google
6: zxing
7: file
'''
if (OCR_SELECT == 1):
baidu_ocr(PIC_PATH)
remove_pic(PIC_PATH)
elif (OCR_SELECT == 'tencent'):
elif (OCR_SELECT == 2):
baidu_ocr_qrcode(PIC_PATH)
remove_pic(PIC_PATH)
elif (OCR_SELECT == 3):
baidu_ocr_form(PIC_PATH)
remove_pic(PIC_PATH)
elif (OCR_SELECT == 4):
tencent_youtu_ocr(PIC_PATH)
remove_pic(PIC_PATH)
elif (OCR_SELECT == 'google'):
elif (OCR_SELECT == 5):
google_ocr(PIC_PATH)
remove_pic(PIC_PATH)
elif (OCR_SELECT == 'baidu_qrcode'):
baidu_ocr_qrcode(PIC_PATH)
remove_pic(PIC_PATH)
elif (OCR_SELECT == 'baidu_form'):
baidu_ocr_form(PIC_PATH)
elif (OCR_SELECT == 6):
barcode_decode(PIC_PATH)
remove_pic(PIC_PATH)
elif (OCR_SELECT == 'file'):
elif (OCR_SELECT == 7):
multi_file_ocr()

'''
Expand Down

0 comments on commit 5de22e1

Please sign in to comment.