OCR 및 NLP를 InterSystems IRIS로 통합
OCR을 수행하기 위해 사용되는 주요 오픈 소스 솔루션은 Python 및 Java 커뮤니티에서 가장 인기 있는 솔루션인 Google Tesseract입니다. Tesseract는 100개 이상의 숙어를 지원하며 자동차 번호판, 캡차 등을 인식하는 새로운 모델로 훈련할 수 있습니다. Tesseract는 C++로 만들어졌으므로 Java는 Tess4J라는 중간체를 사용하여 Tesseract를 사용합니다. 다음 코드는 이를 보여줍니다.
private String extractTextFromImage(File tempFile) throws TesseractException {
ITesseract tesseract = new Tesseract();
tesseract.setDatapath("/usr/share/tessdata/"); //directory to trained models
tesseract.setLanguage("eng+por"); // choose your language/trained model
return tesseract.doOCR(tempFile); //call tesseract function doOCR() passing the file to be processed with OCR technique
}
IRIS가 이 Java 클래스를 사용하고 Java에서 결과를 얻으려면 PEX 및 Java Gateway 솔루션을 사용해야 합니다.
먼저 프로덕션에 Java 프록시를 구성하고 두 번째로 IRIS 및 Java를 프로덕션에 전달하도록 PEX 비즈니스 작업 또는 서비스를 구성해야 합니다.
Class dc.ocr.OcrProduction Extends Ens.Production
{
XData ProductionDefinition
{
<Production Name="dc.ocr.OcrProduction" LogGeneralTraceEvents="false">
<Description></Description>
<ActorPoolSize>2</ActorPoolSize>
<Item Name="OcrService" Category="" ClassName="dc.ocr.OcrService" PoolSize="1" Enabled="true"
Foreground="false" Comment="" LogTraceEvents="false" Schedule=""> </Item>
<Item Name="JavaGateway" Category="" ClassName="EnsLib.JavaGateway.Service" PoolSize="1"
Enabled="true" Foreground="false" Comment="" LogTraceEvents="false" Schedule="">
<Setting Target="Host" Name="ClassPath">.:/usr/irissys/dev/java/lib/JDK18/*:/opt/irisapp/*
:/usr/irissys/dev/java/lib/gson/*
:/usr/irissys/dev/java/lib/jackson/*:/jgw/ocr-pex-1.0.0.jar</Setting>
<Setting Target="Host" Name="JavaHome">/usr/lib/jvm/java-8-openjdk-amd64/</Setting>
</Item>
<Item Name="OcrOperation" Category="" ClassName="EnsLib.PEX.BusinessOperation" PoolSize="1"
Enabled="true" Foreground="false" Comment="" LogTraceEvents="false" Schedule="">
<Setting Target="Host" Name="%gatewayPort">55555</Setting>
<Setting Target="Host" Name="%remoteClassname">community.intersystems.pex.ocr.OcrOperation</Setting>
<Setting Target="Host" Name="%gatewayExtraClasspaths">.:/usr/irissys/dev/java/lib/JDK18/*
:/opt/irisapp/*:/usr/irissys/dev/java/lib/gson/*
:/usr/irissys/dev/java/lib/jackson/*
:/jgw/ocr-pex-1.0.0.jar
</Setting>
</Item>
</Production>
}
}
이제 모든 IRIS 프로덕션이 Java 및 Tesseract와 통신할 수 있습니다! 보다:
//call ocr method to get text from image, if you want to use pex
Set pRequest = ##class(dc.ocr.OcrRequest).%New()
Set pRequest.FileName = file.Filename
// call java pex operation to do ocr, passing file into pRequest and receive ocr text with pResponse
Set tSC = ..SendRequestSync("OcrOperation", pRequest, .pResponse, 1200)
//save the results into database to use text analytics - nlp
Set ocrTable = ##class(dc.ocr.OcrTable).%New()
Set ocrTable.FileName = file.Filename
Set ocrTable.OcrText = pResponse.StringValue
Set tSC = ocrTable.%Save()
주석이 있는 모든 코드 세부 정보는 내 OCR 서비스 저장소( https://openexchange.intersystems.com/package/OCR-Service )에서 찾을 수 있습니다.
이제 텍스트가 추출되었으므로 IRIS NLP 엔진을 사용하여 텍스트 데이터를 분석하고 의사 결정을 지원하는 통찰력을 얻어야 합니다. 이를 위해 텍스트가 추출되면 테이블에 저장되고 이 테이블은 NLP 엔진에서 텍스트 소스로 사용됩니다. 위의 %Save() 테이블을 참조하고 OCRTable(텍스트가 추출된 위치)을 참조하는 NLP가 있는 다음 코드를 참조하십시오. 보다:
Class dc.ocr.OcrNLP Extends %iKnow.DomainDefinition [ ProcedureBlock ]
{
XData Domain [ XMLNamespace = "http://www.intersystems.com/iknow" ]
{
<domain name="OcrNLP" disabled="false" allowCustomUpdates="true">
<parameter name="DefaultConfig" value="OcrNLP.Configuration" isList="false" />
<data dropBeforeBuild="true">
<table listname="OcrNLPTable" batchMode="true" disabled="false"
listerClass="%iKnow.Source.SQL.Lister" tableName="dc_ocr.OcrTable" idField="ID"
groupField="ID" dataFields="OcrText" metadataColumns="FileName" metadataFields="filename" />
</data>
<matching disabled="false" dropBeforeBuild="true" autoExecute="true" ignoreDictionaryErrors="true" />
<metadata>
<field name="filename" operators="=" dataType="STRING" storage="0" caseSensitive="false" disabled="false" />
</metadata>
<configuration name="OcrNLP.Configuration" detectLanguage="true" languages="en,pt"
userDictionary="OcrNLP.Dictionary#1" summarize="true" maxConceptLength="0" />
<userDictionary name="OcrNLP.Dictionary#1" />
</domain>
}
}
내 OCR 서비스 github 저장소에 대한 전체 세부 정보 및 구성을 참조하십시오.
이제 일부 파일을 업로드하고 탐색기로 이동하여 생성된 개념과 CRC를 볼 수 있습니다.
여기에서 논의된 모든 단계와 함께 내 애니메이션을 참조하십시오.
행복한 OCR/NLP 해킹!
Reference
이 문제에 관하여(OCR 및 NLP를 InterSystems IRIS로 통합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/intersystems/ocr-and-nlp-together-into-intersystems-iris-2gcg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)