當前位置:首頁 » 編程語言 » java文字識別

java文字識別

發布時間: 2022-10-07 08:06:12

java可以實現語音識別嗎

這個是可以實現的。
註:test.pcm是語音文件,可以用audacity軟體打開,選擇 文件->導入->裸數據。 設置采樣率為8000Hz。點擊播放就能聽見聲音了。
這個時候程序跑起來還有問題,需要將apiKey 以及secretKey填寫上。這兩個值是你申請應用對應的分配好的。
cuid填本機mac地址就可以了,這個值我試過好像無所謂沒啥要求。
程序能跑起來,並且按照正常返回識別的語音結果。但是返回結果的編碼為GBK,所以漢字顯示為亂碼,需要對其進行一次轉碼。轉碼的代碼是我自己加上去的

Ⅱ OCR文字識別API支持Java語言調用嗎

比如雲脈OCR文檔識別API介面,開發支持Java、C++、C、 object pascal及objective-C等多種語言,用戶在雲脈OCR SDK開發者平台上注冊並登錄即可自主調用..

Ⅲ java怎麼自己做一個orc身份證識別

是OCR文字識別技術來識別身份證吧。OCR識別身份證的話,會涉及到數字識別,中文識別,英文識別的。數字和英文相對比較好識別。中文麻煩一些。目前市場上有一個開源的,tesseract識別效果稍微比較好。樓主可以試一試。tesseract是C++做的,java可以使用JNI調用C語言的。如果樓主不差錢,並且識別效果要求高的話,建議使用第三方的識別軟體。樓主可以和取得聯系。希望幫助到樓主,希望採納,謝謝!

Ⅳ java 如何讀取附加到圖片上的文字

圖片上的文字是沒法讀取的,以為這涉及到圖像處理。非常非常復雜!因為如果你非要讀取圖片上的文字,不是幾行代碼可以搞定的,首相從matlaB開始學,了解什麼是圖像處理。然後再開發相應的jar包。當然,你也可以使用相關的軟體工具,比如識圖軟體,通過讀取軟體的反饋也算是讀取了圖片上的文字

Ⅳ 用JAVA能把Word和PDF文檔的表格內容和格式識別出來嗎

java的poi插件可以讀取word文件。

Ⅵ java手寫體英文數字識別系統 識別預處理如何實現 採用什麼語言比較好

轉載1 引言

手寫體數字識別是文字識別中的一個研究課題,是多年來的研究熱點,也是模式識別領域中最成功的應用之一。由於識別類型較少,在實際生活中有深遠的應用需求,一直得到廣泛的重視。近年來隨著計算機技術和數字圖像處理技術的飛速發展,數字識別在電子商務、機器自動輸入等場合已經獲得成功的實際應用。盡管人們對手寫數字的研究己從事了很長時間的研究,並己取得了很多成果,但到目前為止,機器的識別本領還無法與人的認知能力相比,這仍是一個有難度的開放問題,所以對手寫數字識別的進一步研究,尋求如何更高效更准確更節能地實現手寫數字的自動錄入和識別的解決方案對提高經濟效益、推動社會發展都有深遠的意義。

近年來, 人工神經網技術發展十分迅速, 它具有模擬人類部分形象思維的能力, 為模式識別開辟了新的途徑, 成了模擬人工智慧的一種重要方法,特別是它的信息並行分布式處理能力和自學習功能等顯著優點, 更是激起了人們對它的極大的興趣。BP(Back Propagation)網路是神經網路中一種,是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,可以很好地解決非線性問題,在函數逼近、模式識別和數據壓縮等方面都有很廣泛的應用。我們在認真地研究了神經網路的基本原理和機制的基礎上, 結合手寫體數字識別這一具體課題, 提出了用BP神經網路方法來實現手寫體數字識別的方案。

2 手寫體數字識別概述

2.1 手寫數字識別簡述

模式識別是六十年代初迅速發展起來的一門學科。由於它研究的是如何用機器來實現人及某些動物對事物的學習、識別和判斷能力,因而受到了很多科技領域研究人員的注意,成為人工智慧研究的一個重要方面。

字元識別是模式識別的一個傳統研究領域。從50年代開始,許多的研究者就在這一研究領域開展了廣泛的探索,並為模式識別的發展產生了積極的影響。

手寫體數字識別是多年來的研究熱點也是字元識別中的一個特別問題。手寫體數字識別在特定的環境下,如郵政編碼自動識別系統,稅表和銀行支票自動處理系統等一般情況。當涉及到數字識別時,人們往往要求識別器有很高的識別可靠性,特別是有關金額的數字識別時,如支票中填寫的金額部分,更是如此。因此針對這類問題的處理系統設計的關鍵環節之一就是設計出高可靠性和高識別率的手寫體數字識別方法。這個領域取得了飛速的發展,部分是由於更好的學習演算法,部分是由於更優良的訓練集。美國國家科學學會(NIST)建立了

一個包含60000個經過標注的數字的資料庫,它已經成為對新的學習演算法進行比較的性能測試標准。然而可以說還沒有哪個手寫體數字識別器達到完美的識別效果。

在過去的數十年中,研究者們提出了許許多多的識別方法,按使用的特徵不同,這些方法可以分為兩類:基於結構特徵的方法和基於統計特徵的方法。統計特徵通常包括點密度的測量、矩、特徵區域等。結構特徵通常包括園、端點、交叉點、筆劃、輪廓等,一般來說,兩類特徵各有優勢。例如,使用統計特徵的分類器易於訓練,而且對於使用統計特徵的分類器,在給定的訓練集上能夠得到相對較高的識別率;而結構特徵的主要優點之一是能描述字元的結構,在識別過程中能有效地結合幾何和結構的知識,因此能夠得到可靠性較高的識別結果。本文針對手寫數字識別選用BP神經網路這種基於傳統統計學基礎上的分類方法,用於分割和識別,並取得了較好的識別效果。

2.2 手寫數字識別的一般過程

手寫體數字識別的過程如圖2-1所示,一般分為預處理、特徵提取、數字串的分割、分類器、等模塊。原始圖像是通過光電掃描儀,CCD器件或電子傳真機等獲得的二維圖像信號。預處理包括對原始圖像的去噪、傾斜校正或各種濾波處理。手寫體數字具有隨意性,其字元大小、字間距、字內距變化很大,分割難度較大。手寫數字串的分割是其中最重要的環節,是制約識別率的瓶頸所在。去噪是預處理中極重要的環節。系統面對的是從實際環境中切分出的字元圖像,可能有粘連的邊框、隨機的墨點、切分不正確引入的其他字元筆劃等使前景點增加的雜訊,還可能有斷線等使背景增加的雜訊,目前適應各種環境的通用去噪演算法還不成熟。預處理中的規格化也不僅僅是同比例的放縮,它不僅要保持拓撲不變,更要最大限度地突出所取特徵。在眾多應用環境中,特徵提取、分類器、多分類器集成是整個識別系統的核心。大體上來說特徵可以分為結構特徵和統計特徵兩類。由於分類器的選擇取決於所提取的特徵,因此相應的識別方法便有結構方法和統計方法。

總之,從手寫體數字識別原理可見,手寫體數字識別技術主要包括以下幾點:

1)圖像預處理,包括彩色圖像轉成灰度圖像、二值化,歸一化,濾除干擾雜訊等;

2)基於數字圖像的特徵選擇和提取;

3)數字串的分割;

4)模式分類識別。

其中,第二和第四部分是手寫數字識別的重點,直接關繫到識別的准確率和效率,也是本論文研究的重點所在。

結果圖2-1 識別流程

2.3 手寫數字識別的一般方法及比較

手寫數字識別在學科上屬於模式識別和人工智慧的范疇。在過去的四十年中,人們提出了很多辦法獲取手寫字元的關鍵特徵,提出了許多識別方法和識別技術。這些手段分兩大類:

全局分析和結構分析。

多年的研究實踐表明,對於完全沒有限制的手寫數字,幾乎可以肯定:沒有一種簡單的方案能達到很高的識別率和識別精度,因此,最近這方面的努力向著更為成熟、復雜、綜合的方向發展。研究工作者努力把新的知識運用到預處理,特徵提取,分類當中。近年來,人工智慧中專家系統方法、人工神經網路方法已應用於手寫數字識別。在手寫數字識別的研究中,神經網路技術和多種方法的綜合是值得重視的方向。

針對模式特徵的不同選擇及其判別決策方法的不同,可將模式識別方法大致分為5大類這5種識別方法均可實現手寫數字識別,但它們特點不同,必須根據條件進行選擇。

(1)統計模式法

這是以同類模式具有相同屬性為基礎的識別方法。用來描述事物屬性的參量叫做待征,它可以通過模式的多個樣本的測量值統計分析後按一定準則來提取。例如:在手寫數字識別系統中,我們可以把每個數字的圖形分為若干個小方塊(圖),然後統計每一小方塊中的黑像素構成一個多維特徵矢量,作為該數字的特徵。必須注意的是:在選擇特徵時,用於各類模式的特徵應該把同類模式的各個樣本聚集在一起,而使不同類模式的樣本盡量分開,以保證識別系統能具有足夠高的識別率。

(2)句法結構方法

在形式語言和自動機的基礎上產生了句法結構這一方法。其基本原理是:對每一個模式都用一個句法來表示,而對一個待識別的未知樣本,通過抽取該樣本的基元來構造該樣本的句子,然後分析此句子滿足什麼樣的句法,從而推斷出他該屬於哪個模式類。這種方法的優點是它能反映模式的結構特徵,而且對模式的結構特徵變換不敏感,因此比較適合聯機識別。但是由於抽取字元的基元比較困難,因而不是特別適合用於離線識別,同時這一方法的理論基礎還不可靠,抗干擾能力比較弱。

(3)邏輯特徵法

就是其特徵的選擇對一類模式識別問題來說是獨一無二的,即在一類問題中只有1個模式具有某1種(或某1組合的)邏輯特徵,此方法律立了關於知識表示及組織,目標搜索及匹配的完整體系;對需通過眾多規則的推理達到識別目標的問題,有很好的效果,但當樣品有缺損,背景不清晰,規則不明確甚至有歧義時,效果不好。

(4)模糊模式方法

就是在模式識別過程中引入了模糊集的概念,由於隸屬度函數作為樣品與模板相似程度的量度,故能反映整體的、主要的特性,模糊模式有相當不勻稱的抗干擾與畸變,從而允許樣品有相當程度的干擾與畸變,但准確合理的隸屬度函數往往難以建立。目前有學者在研究,並將其引入神經網路方法形成模糊神經網路識別系統。

(5)神經網路方法

就是使用人工神經網路方法實現模式識別。可處理某些環境信息十分復雜,背景知識不清楚,推理規則不明確的問題,允許樣品有較大的缺損、畸變。神經網路方法的缺點是其模型在不斷豐富完善中,目前能識別的模式類不夠多,神經網路方法允許樣品有較大的缺損和畸變,其運行速度快,自適應性能好,具有較高的解析度。

上述幾種識別方法各有特點。結構法比較直觀,能較好反映事物的結構特性:問題是基元的提取很不容易,各基元的關系也比較復雜,抗干擾性能也較差。統計法用計算機來抽取特徵,比較方便,抗干擾性能強;缺點是沒有充分利用模式的結構特性。神經網路方法由於處理的並行性,可以快速同時處理大容量的數據,工作時具有高速度和潛在超高速,並且,網路的最終輸出是由所有神經元共同作用的結果,一個神經元的錯誤對整體的影響很小,所以其容錯性也非常的好。基於以上的考慮,本文的手寫數字識別採用了神經網路的方法。

3 圖像預處理與特徵提取

手寫體圖像數據在沒有進行一定的圖像預處理和特徵提取之前,不能立即應用到程序中進行神經網路訓練和字元識別工作。從圖像處理角度來說,手寫體的字元識別對字元是不是有顏色是不關心的,而對此圖像的清晰度是很關心的。所以在圖像進行一系列的圖像處理工作是很有必要的。圖像的預處理是正確、有效提取圖像特徵的基礎,有效的圖像特徵作為網路的輸入值才能進行正確的神經網路訓練和最終得到正確、有效的網路權重。

3.1 數字圖像預處理

3.1.1 灰度化處理

彩色圖像包含了大量的顏色信息,不但在存儲上開銷很大,在處理上也會降低系統的執行速度,因此在對圖像進行識別等處理中經常將彩色圖像轉變為灰度圖像,以加快處理速度。由彩色轉換為灰度的過程稱為灰度化處理。灰度圖像就是只有強度信息而沒有顏色信息的圖像,存儲灰度圖像只需要一個數據矩陣,矩陣每個元素表示對應位置像素的灰度值。彩色圖像的像素色為RGB(R,G,B),灰度圖像的像素色為RGB(r,r,r) ,R,G,B可由彩色圖像的顏色分解獲得。而R,G,B的取值范圍是0-255,所以灰度的級別只有256級。灰度化的處理方法主要有如下三種:最大值法、平均值法和加權平均值法。本文用到的加權平均值法來處理,即更換每個像素的顏色索引(即按照灰度映射表換成灰度值)。 權重選擇參數為:

紅:0.299

綠:0.587

藍:0.114

例如某像素點顏色對應的灰度值計算公式為:

NewPixColor?(BYTE)(0299*Red?0.587*Green?0.114*Blue) 系統輸入的源圖像支持3通道或者4通道圖像,支持Format24bppRgb, format32bppRgb, Format32bppArgb和Format8bppIndex這4種像素格式。

3.1.2 二值化處理

二值圖像是指整幅圖像畫面內僅黑、白二值的圖像。在數字圖像處理中,二值圖像佔有非常重要的地位。在實際的識別系統中,進行圖像二值變換的關鍵是要確定合適的閾值,使得字元與背景能夠分割開來,二值變換的結果圖像必須要具備良好的保形性,不丟掉有用的形狀信息,不會產生額外的空缺等等。採用二值圖像進行處理,能大大地提高處理效率。 二值化的關鍵在於閾值的選取,閾值的選取方法主要有三類:全局閾值法、局部閾值法、動態閾值法。全局閥值二值化方法是根據圖像的直方圖或灰度的空間分布確定一個閥值,並根據該閥值實現灰度圖像到二值化圖像的轉化。全局閥值方法的優點在於演算法簡單,對於目標和背景明顯分離、直方圖分布呈雙峰的圖像效果良好,但對輸入圖像量化雜訊或不均勻光照等情況抵抗能力差,應用受到極大限制。局部閥值法則是由像素灰度值和像素周圍點局部

灰度特性來確定像素的閥值的。Bernsen演算法是典型的局部閥值方法,非均勻光照條件等情況雖然影響整體圖像的灰度分布卻不影響局部的圖像性質,局部閥值法也存在缺點和問題,如實現速度慢、不能保證字元筆劃連通性、以及容易出現偽影現象等。動態閥值法的閥值選擇不僅取決於該像素灰度值以及它周圍像素的灰度值,而且還和該像素的坐標位置有關,由於充分考慮了每個像素鄰域的特徵,能更好的突出背景和目標的邊界,使相距很近的兩條線不會產生粘連現象。在圖像分割二值化中,自動閩值選取問題是圖像分割的關鍵所在。事實證明,閩值的選擇的恰當與否對分割的效果起著決定性的作用。

本文採用全局閾值的方法,實現將圖像二值化的功能。如果某個像素的值大於等於閾值,該像素置為白色;否則置為黑色。系統程序目前僅支持8bpp灰度圖像的轉換,閾值介於0~255之間,程序中取220。

3.1.3 去離散雜訊

原始圖像可能夾帶了雜訊,去雜訊是圖像處理中常用的手法。通常去噪用濾波的方法,比如中值濾波、均值濾波,本文中去除離散雜訊點採用中值濾波的方法。中值濾波法是一種非線性平滑技術,它將每一象素點的灰度值設置為該點某鄰域窗口內的所有象素點灰度值的中值,讓周圍的像素值接近的真實值,從而消除孤立的雜訊點。

3.1.4 字元分割

在識別時系統只能根據每個字元的特徵來進行判斷,為了最終能准確識別手寫體數字,必須將單個字元從處理後的圖像中逐個提取分離出來。具體做法是將圖像中待識別的字元逐個分離出來並返回存放各個字元的位置信息的鏈表。當把圖像分割完成後,從一定意義上來說便是形成了不同的小圖,每一張小圖就是一個數字,才能對這些小圖進行尺寸大小一致的調整。

3.1.5 細化

3.2 圖像特徵提取

特徵提取是字元識別中的一個重要組成部分,是模式識別的核心之一。經過預處理後,根據識別方法的要求抽取圖像特徵,作為識別的依據。一般而言,選擇的特徵一方面要求能夠足夠代表這個圖像模式,另一方面要求它們的數量盡可能少,這樣能有效地進行分類和較小的計算量。特徵提取的好壞會直接影響其識別的分類效果,進而影響識別率,因此特徵選擇是模式識別的關鍵。但是,目前還沒有一個有效的、一般的抽取、選擇特徵的方法。抽取、選擇特徵的方法都是面對問題的,因此針對不同的識別問題往往有不止一種的抽取、選擇特徵的方法。

Ⅶ java讀取pdf為什麼是縱向讀取文字的

關於java讀取pdf的話,推薦閣試pdfbox這個工具,能夠支持中文,但是缺點在於不能讀取圖片形式的pdf,比如將一篇文章照下來,存成圖片,做的pdf識別不了。如果想要做圖像方面的文字識別的話,可以考慮使用tesseract這個工具,同樣識別中文!關於文字的旋轉方向……可以每次將文字進行九十度旋轉,並進行識別,能識別出來的時候,計算出旋轉角度即可!

Ⅷ 使用java如何識別驗證碼中的文字

這個屬於圖像處理的范疇吧,自己編寫的話設計到數字圖像濾波等等專業知識。不過網上沒准兒能找到已經做好的代碼,你可以找找看。

Ⅸ 怎麼用java實現圖片裡面的數字識別

圖片是由點組成(或者是別的方法),記錄點的位置、顏色,控制點就行了。至於ocr,有難度,首先要製作文字的變化范圍及整個字各部分的聯系,這還是簡單的。然後,圖像分解就行了。額,我不會編程,稍微會點c++,所以這個回答就是假設如果我做這種程序的思路。

Ⅹ java如何識別文字元號混雜的字元串字元串

補充一下:我覺得你是不是聽錯作業的了,這個題目明顯是讓你練習使用Map集合的讀取方式的!
用正則進行字元串過濾太繁瑣了,下面就是,如果使用Map集合就要方便很多!
java.util.Scanner;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassDay03_A{
staticScannersc=newScanner(System.in);
staticStringregexCn="[\u4e00-\u9fa5]",regexNum="[\d]",regexUp="{2}";

publicstaticvoidmain(String[]args){
Stringstr="小紅10,小剛11";
String[]arrName=getString(str,regexCn+regexUp),arrNum=getString(str,regexNum+regexUp);
while(true){
addMethod(arrName,arrNum);
}
}
privatestaticString[]getString(Stringstr,Stringregex){
str=str.replaceAll("\s\.","");
Stringsrc="";
Matcherm=Pattern.compile(regex).matcher(str);
while(m.find()){
src+=m.group()+",";
}
returnsrc.split(",");
}
privatestaticvoidaddMethod(String[]arrName,String[]arrNum){
System.out.println("輸入:");
Stringsrc=sc.nextLine();
Stringoper=src.replaceAll("[\u4e00-\u9fa5\d]","");
Stringnum=src.replaceAll("[^\d]","");
Stringname=src.replaceAll("[^\u4e00-\u9fa5]","");
for(inti=0;i<arrName.length;i++){
if(arrName[i].contains(name)){
show(arrNum[i]+","+num,oper);
break;
}
}
}
privatestaticvoidshow(Stringstr,Stringoper){
Stringstrs[]=str.split(","),src="";
int[]arr=newint[strs.length];
for(inti=0;i<arr.length;i++){
arr[i]=Integer.parseInt(strs[i]);
}
switch(oper){
case"+":
src=arr[0]+arr[1]+"";
break;
case"-":
src=arr[0]-arr[1]+"";
break;
case"*":
src=arr[0]*arr[1]+"";
break;
case"/":
src=arr[0]/arr[1]+"";
break;
case"%":
src=arr[0]%arr[1]+"";
break;
}
System.out.println("結果:"+src+" ");
}
}

熱點內容
循跡小車演算法 發布:2024-12-22 22:28:41 瀏覽:79
scss一次編譯一直生成隨機數 發布:2024-12-22 22:04:24 瀏覽:954
嫁接睫毛加密 發布:2024-12-22 21:50:12 瀏覽:972
linuxbin文件的安裝 發布:2024-12-22 21:46:07 瀏覽:796
vlcforandroid下載 發布:2024-12-22 21:45:26 瀏覽:662
電腦做網關把數據發送至伺服器 發布:2024-12-22 21:44:50 瀏覽:429
新華三代理什麼牌子的伺服器 發布:2024-12-22 21:33:21 瀏覽:340
歡太會員密碼是什麼 發布:2024-12-22 20:57:28 瀏覽:71
sqllocaldb 發布:2024-12-22 20:07:08 瀏覽:123
如何找到我的伺服器 發布:2024-12-22 19:52:14 瀏覽:299