再看 AspriseOCR OCR應用開發

2021-07-07 10:05:36 字數 3699 閱讀 1053

我寫這個博文時間為 2015/11/24日,注意時間因為,網上很多文章時間上很久遠,有的已經不能參考了

我也找了很多,但是很可惜沒有找到多少有價值的資訊

大部分的資訊都很老舊而且有關aspriseocr 的不少

尤其關於delphi +aspriseocr 的更少

我的開發環境  為  delphi7 +win8 64 位

這個應用有幾點要注意

1.  識別的只能為   白底黑字 ,其他型別的不能正確

2. aspriseocr.dll  ,devil.dll ,ilu.dll

3. 呼叫dll 函式定義為

//function ocr(imgname:string;imagetype:integer):pchar;stdcall;

//  external 'aspriseocr.dll';

function ocr(imgname:pchar;i:integer):pchar;stdcall;external 'aspriseocr.dll';

function ocrbarcodes(imgname:string;imagetype:integer):pchar;stdcall;

external 'aspriseocr.dll';

function ocrpart(filename :string; imagetype:integer; startx :integer;

starty :integer; width:integer; height:integer):pchar;stdcall;

external 'aspriseocr.dll';

請看上面第乙個函式的定義 ocr  的引數imagname   string 或者 pchar   哪個正確?

我可以告訴你們  都是可以編譯通過的  而且 兩種定義都是對的

所以很多事情需要自己驗證

截圖識別的 處理

//我的圖列

//的2值化 -  網上大部分人的做法

function tfrmmain.cbmptwovalues(bmp:tbitmap;graythreshold:byte):tbitmap;

varp: pbytearray;

gray, x, y: integer;

abmp: tbitmap;

begin

abmp:=tbitmap.create;

abmp:=bmp;

//設定為24位真彩色

abmp.pixelformat := pf24bit;

randomize;

for y := 0 to abmp.height - 1 do

begin

p := abmp.scanline[y];

for x := 0 to abmp.width - 1 do

begin

//乙個象素點三個位元組

// y = 0.299 * r + 0.587 * g + 0.114 * b

gray := round(p[x * 3 + 2] * 0.3 + p[x * 3 + 1] * 0.59 +

p[x * 3] * 0.11);

if gray > graythreshold then //全域性閥值128

begin

p[x * 3] := 255;

p[x * 3 + 1] := 255;

p[x * 3 + 2] := 255;

endelse

begin

p[x * 3] := 0;

p[x * 3 + 1] := 0;

p[x * 3 + 2] := 0;

end;

end;

end;

result:=abmp;

end;

//的2值化 -  我自己的做法(針對我的特定的)

function tfrmmain.cbmpblackwhiteexe(abmp: tbitmap;amaincolor:tcolor;amaintorl:byte): tbitmap;

varbm:tbitmap;

bx,by:integer;

acolor:tcolor;

aclr,aclg,aclb:byte;

achagecoloren:boolean;

begin

bm:=tbitmap.create;

bm:=abmp;

for bx := 0 to bm.width-1 do

begin

for by := 0 to bm.height-1 do

begin

//clblue = tcolor($ff0000); clblack = tcolor($000000);

//clred = tcolor($0000ff);clwhite = tcolor($ffffff);

//cllime = tcolor($00ff00);

acolor:=bm.canvas.pixels[bx,by];

achagecoloren:=false;

aclb:=abs( byte(acolor shr 16)- byte(amaincolor shr 16));

if aclb<=amaintorl then

begin

// blue ok

aclg:=abs( byte(acolor shr 8)-byte(amaincolor shr 8));

if aclg <= amaintorl then

begin

//green ok

aclr:=abs( byte(acolor)-byte(amaincolor));

if aclr <= amaintorl then

begin

//red ok

achagecoloren:=true;

end;

end;

end;

if achagecoloren then

begin

bm.canvas.pixels[bx,by]:=tcolor($ffffff);   //white

endelse

begin

bm.canvas.pixels[bx,by]:=tcolor($000000);  //black

end;

end;

end;

result:=bm;

end;

//反色

procedure tfrmmain.negative(var bmp:tbitmap);

vari, j: integer;

prgb: prgbtriple;

begin

bmp.pixelformat:=pf24bit;

for i := 0 to bmp.height - 1 do

begin

prgb := bmp.scanline[i];

for j := 0 to bmp.width - 1 do

begin

prgb^.rgbtred :=not prgb^.rgbtred ;

prgb^.rgbtgreen :=not prgb^.rgbtgreen;

prgb^.rgbtblue :=not prgb^.rgbtblue;

inc(prgb);

end;

end;

end;

寫的不好  別噴我啊

再看APP安全

堡壘最先從內部攻破。列寧 最安全的地方,同時也是最危險的地方。最近的兩次蘋果安全危機,一次是因為icloud伺服器,一次是因為開發者使用的xcode。別笑,是真的。github素來以開源出名,github建站之初的目的是借助git協議 版本控制協議,和svn協議作用一樣,但是功能比svn強大 為程式...

再看社交網路

社交網路領域的術語 圖譜 一種網狀結構,代表實體 興趣,人 和聯絡。實體就像頻率分量,聯絡就像相位和幅度。興趣圖譜 社交圖譜,從譜中濾出你關心的分量,進而建立聯絡 通訊 聚類 一種演算法,用來從社交網路 資料庫 中根據需求分類,便於提高搜尋的查全率。查全率 一次查詢中需要的和所有的之比 和查準率的關...

基因檢測 再看

description 用乙個字串表示一段基因,例如 ctatgggttt 兩段基因的相似度定義為它們所包含的最大公共子串的長度。例如 ccttgg 和 tgggc 的最大公共子串為 tgg 它的長度為3,則我們稱 ccttgg 和 tgggc 的相似度為3。現給定兩段基因,要求計算它們的相似度。i...