日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

近日瀏覽網(wǎng)上一些圖片提取文字的網(wǎng)站,覺得甚是有趣,花費(fèi)半日也做了個(gè)在線圖片識(shí)別程序,完成了兩個(gè)技術(shù)方案的選擇,一是 tesseract + Python flask的方案實(shí)現(xiàn),二是 tesseract + Spring web 的技術(shù)解決方案,并簡(jiǎn)作論述,與君共勉。

 

一、tesseract-ocr介紹

ocr 含義是Optical Character Recognition,含義即視覺字符識(shí)別。而tesseract是該領(lǐng)域特別優(yōu)秀開源的作品。

官方的tesseract定義:

OCR engine - libtesseract and a command line program - tesseract.

即tesseract包括一個(gè)視覺字符識(shí)別引擎libtesseract和命令行程序tesseract。

當(dāng)前最新穩(wěn)定版本是4.x.x基于LSTM,源碼可從找到tesseract的GitHub: tesseract.找到。

幾行 Java 代碼搞定圖片提取文字功能
  1. 輸入(一張圖片)

  2. 有用信息提取(比如一個(gè)圖片上只有一個(gè)字,那其他留白的是無用,這個(gè)字上每個(gè)色素是有效的并且相關(guān))

  3. 找出文字/線條

  4. 字符分類集

  5. 輸入與分類集對(duì)比找出最接近的

  6. 輸出識(shí)別結(jié)果

 

二、安裝tesseract

第一步下載

下載合適的exe安裝文件:

網(wǎng)址:
https://digi.bib.uni-mannheim.de/tesseract/,下載完成后后裝即可

幾行 Java 代碼搞定圖片提取文字功能

第二步環(huán)境變量配置

在path變量中加入tesseract-ocr的安裝路徑

幾行 Java 代碼搞定圖片提取文字功能

第三步安裝成功檢測(cè)

使用tesseract指令,顯示如下:

幾行 Java 代碼搞定圖片提取文字功能

linux環(huán)境下載安裝與上述類似

幾行 Java 代碼搞定圖片提取文字功能

下載leptonica 和 tesseract兩個(gè)包,解壓安裝,配置環(huán)境變量即可。網(wǎng)上很容易找到該安裝包。

 

三、使用命令行

1.tesseract + 圖片路徑 + 保存結(jié)果名 + -l 語言集

示列: tesseract 1606150081.png 1606150081 -l chi_sim

2.tesseract + 圖片路徑 +stdout -l +語言集

示列: tesseract D:companyruigushopspring-2stest.png stdout -l chi_sim

有了上述之后就可以完成web圖片識(shí)別程序的開發(fā)啦,廢話不多說,直接上代碼。

 

四、程序?qū)崿F(xiàn)(Python)

程序設(shè)計(jì)思路:

上傳圖片 -> 保存 ->對(duì)上傳的圖片執(zhí)行tesseract指令->獲取識(shí)別結(jié)果

只有二十多行代碼就實(shí)現(xiàn)了,so easy,以后網(wǎng)上看到圖片識(shí)別程序再也不會(huì)感覺神奇了吧!

# coding=utf-8
from flask import Flask, requestimport osimport datetimeimport timeApp = Flask(__name__)def get_time_stamp:times = datetime.datetime.now.strftime('%Y-%m-%d %H:%M:%S')
array = time.strptime(times, "%Y-%m-%d %H:%M:%S")
time_stamp = int(time.mktime(array))
return time_stamp
@app.route('/image/extract', methods=['POST'])
def pure_rec:file = request.files.get('file')
ts = str(get_time_stamp)up_path = os.path.join(ts + file.filename)
file.save(up_path)cmd = "tesseract "+up_path+" " + ts + " -l chi_sim"
print(cmd)
os.system(cmd)
with open(ts+".txt", 'r+', encoding="utf-8") as f:
result = f.readreturn resultif __name__ == '__main__':
app.run(debug=True)

 

五、程序?qū)崿F(xiàn)(JAVA)

不需要任何引入第三方j(luò)ar包,搭建一個(gè)簡(jiǎn)單的 Springboot Web 項(xiàng)目就可以了,沒有其他額外的依賴。

Controller:

@RestController
public class LiteralExtractController {
@PostMapping("/image/extract")
public String reg(@RequestParam("file")MultipartFile file) throws IOException {
String result = "";
String filename = file.getOriginalFilename;
File save = new File(System.getProperty("user.dir")+"\"+filename);
if (!save.exists){
save.createNewFile;}file.transferTo(save);String cmd = String.format("tesseract %s stdout -l %s",System.getProperty("user.dir")+"\"+filename,"chi_sim");
result = cmd(cmd);return result;
}public static String cmd(String cmd) {
BufferedReader br = ;try {
Process p = Runtime.getRuntime.exec(cmd);br = new BufferedReader(new InputStreamReader(p.getInputStream));
String line = ;
StringBuilder sb = new StringBuilder;
while ((line = br.readLine) != ) {
sb.append(line + "n");
}return sb.toString;
} catch (Exception e) {
e.printStackTrace;}finally
{if (br != )
{try {
br.close;} catch (Exception e) {
e.printStackTrace;}}}return ;
}}

 

六、實(shí)驗(yàn)測(cè)試

很簡(jiǎn)單二十多行代碼就完成了,看看效果怎么樣吧。

測(cè)試一圖片:

幾行 Java 代碼搞定圖片提取文字功能

測(cè)試一結(jié)果:

幾行 Java 代碼搞定圖片提取文字功能

測(cè)試二圖片:

幾行 Java 代碼搞定圖片提取文字功能

測(cè)試二結(jié)果:

幾行 Java 代碼搞定圖片提取文字功能

perfect,識(shí)別的很準(zhǔn)確,第二個(gè)測(cè)試全部是英文字符的時(shí)候我們采用了中文訓(xùn)練的數(shù)據(jù)集,雖然也很好的識(shí)別了,但是速度會(huì)慢很多。

 

七、總結(jié)

圖片識(shí)別在當(dāng)今網(wǎng)絡(luò)技術(shù)領(lǐng)域是非常熱門的一塊,而這次完成的這個(gè)程序完全是依賴別人開源框架來完成了這個(gè)技術(shù)實(shí)現(xiàn),在應(yīng)用層面這是成功的,但是本質(zhì)上并沒有實(shí)際算法,技術(shù)核心上的東西,如果只關(guān)心應(yīng)用層開發(fā)上述解決了我們計(jì)算機(jī)在規(guī)則字符識(shí)別上的問題。

上述代碼中基本沒有難點(diǎn),直接復(fù)制即可使用。此外,tesseract作為一款優(yōu)秀的開源字符識(shí)別軟件,但它也不是萬能的,tesseract只能識(shí)別規(guī)則的字符,對(duì)于一些藝術(shù)字,抽象字它是無能為力的。

來源:blog.csdn.net/weixin_44671737/article/details/110000864

分享到:
標(biāo)簽:提取 文字 圖片
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定