Windows 10 OCR and Face detection
Re: Windows 10 OCR and Face detection
@fryquez: Thank you very much for that. This could be very useful.
"Daddy, I'll run faster, then it is not so far..."
Re: Windows 10 OCR and Face detection
I have updated the code in my earlier post for OCRing text on the screen so that it works correctly with x64 versions of Windows. The updated code may be downloaded by clicking the download link in my original post.
Re: Windows 10 OCR and Face detection
Thank you very much!
Re: Windows 10 OCR and Face detection
Hello,
A small question: is it possible to adapt the code to do handwriting detection?
Thanks in advance,
Cordially,
A small question: is it possible to adapt the code to do handwriting detection?
Thanks in advance,
Cordially,
GallyHC
http://www.koakdesign.info
http://www.koakdesign.info
Re: Windows 10 OCR and Face detection
Code: Select all
EnableExplicit
XIncludeFile "Windows 10 OCR and Face detection.pb"
#Win0 = 0
#SysTrayIcon = 0
#Menu = 0
Enumeration
#mExit
#mCapture
EndEnumeration
Structure tOCR_DEMO
ImageID.i
sFromImage.s
EndStructure
Global tOCR_DEMO.tOCR_DEMO
Global HDC
Define hWnd_0
Procedure OCR_DEMO(*OCR_DEMO.tOCR_DEMO)
If *OCR_DEMO\ImageID
*OCR_DEMO\sFromImage = WinOCR::get_TextFromImageID(*OCR_DEMO\ImageID)
EndIf
EndProcedure
Procedure HBitmapFromScreen(X, Y, W, H)
Protected HBM, PDC
If Not HDC
HDC = GetDC_(0)
EndIf
HBM = CreateCompatibleBitmap_(HDC, W, H)
PDC = CreateCompatibleDC_(HDC)
SelectObject_(PDC, HBM)
BitBlt_(PDC, 0, 0, W, H, HDC, X, Y, #SRCCOPY)
DeleteDC_(PDC)
ProcedureReturn HBM
EndProcedure
Procedure CaptureText()
Protected thread
tOCR_DEMO\ImageID = HBitmapFromScreen(WindowX(#Win0, #PB_Window_InnerCoordinate),
WindowY(#Win0, #PB_Window_InnerCoordinate),
WindowWidth(#Win0),
WindowHeight(#Win0))
thread = CreateThread(@OCR_DEMO(), @tOCR_DEMO)
If thread
WaitThread(thread)
SetClipboardText(tOCR_DEMO\sFromImage)
MessageRequester("On the clipboard", tOCR_DEMO\sFromImage)
EndIf
DeleteObject_(tOCR_DEMO\ImageID)
EndProcedure
Procedure _Exit()
ReleaseDC_(0, HDC)
CloseWindow(#Win0)
RemoveSysTrayIcon(#SysTrayIcon)
End
EndProcedure
hWnd_0 = OpenWindow(#Win0, 0, 0, 400, 200, "Click in the center of the window", #PB_Window_ScreenCentered | #WS_SIZEBOX | #PB_Window_Tool | #PB_Window_SystemMenu | #PB_Window_Invisible | #WS_BORDER)
If hWnd_0
SetWindowColor(#Win0, #Blue)
SetWindowLong_(hWnd_0, #GWL_EXSTYLE, #WS_EX_LAYERED | #WS_EX_TOPMOST)
SetLayeredWindowAttributes_(hWnd_0, #Blue, 110, #LWA_COLORKEY)
If CreatePopupMenu(#Menu)
MenuItem(#mCapture, "Text capture")
MenuBar()
MenuItem(#mExit, "Exit")
EndIf
AddSysTrayIcon(#SysTrayIcon, hWnd_0, GetClassLongPtr_(hWnd_0, #GCL_HICON))
Repeat
Select WaitWindowEvent()
Case #PB_Event_LeftClick, #PB_Event_RightClick
CaptureText()
Case #PB_Event_CloseWindow
HideWindow(#Win0, #True)
StickyWindow(#Win0, #False)
;- Tray Events
Case #PB_Event_SysTray
Select EventType()
Case #PB_EventType_RightClick, #PB_EventType_LeftClick
DisplayPopupMenu(#Menu, hWnd_0)
EndSelect
;- Menu Events
Case #PB_Event_Menu
Select EventMenu()
Case #mExit
_Exit()
Case #mCapture
HideWindow(#Win0, #False)
StickyWindow(#Win0, #True)
EndSelect
EndSelect
ForEver
EndIf
Re: Windows 10 OCR and Face detection
@fryquez : Thanks again for the WIC image loading function. I use it a lot to load HEIC images.
Unfortunately, there seems to be a memory leak. I can only load 11 images with it, then at
will no more buffer created. Probably no more free memory?
Does the memory of CreateDIBSection have to be released via DeleteObject?
any help is appreciated!
Kind regards
Dige
Unfortunately, there seems to be a memory leak. I can only load 11 images with it, then at
Code: Select all
*hDIBBitmap\i = CreateDIBSection_(hdcScreen, @bminfo, #DIB_RGB_COLORS, @*pvImageBits, #Null, 0)
Does the memory of CreateDIBSection have to be released via DeleteObject?
any help is appreciated!
Kind regards
Dige
fryquez wrote: ↑Sun Nov 14, 2021 6:45 pmCode: Select all
EnableExplicit Macro WIC_SUCCEEDED(HRESULT) (HRESULT & $80000000 = 0) EndMacro #WICBitmapInterpolationModeNearestNeighbor = 0 #WICBitmapInterpolationModeLinear = 1 #WICBitmapInterpolationModeCubic = 2 #WICBitmapInterpolationModeFant = 3 #WICBitmapInterpolationModeHighQualityCubic = 4 #WICBITMAPINTERPOLATIONMODE_FORCE_DWORD = $7fffffff #WICBitmapTransformRotate0 = 0 #WICBitmapTransformRotate90 = 1 #WICBitmapTransformRotate180 = 2 #WICBitmapTransformRotate270 = 3 #WICBitmapTransformFlipHorizontal = 8 #WICBitmapTransformFlipVertical = $10 #WICBITMAPTRANSFORMOPTIONS_FORCE_DWORD = $7fffffff Interface IWICMetadataQueryReader Extends IUnknown GetContainerFormat(*pguidContainerFormat) GetLocation(cchMaxLength, *wzNamespace, *pcchActualLength) GetMetadataByName(wzName, *pvarValue) GetEnumerator(*ppIEnumString) EndInterface Interface IWICComponentInfo Extends IUnknown GetComponentType(*pType) GetCLSID(*pclsid.CLSID) GetSigningStatus(*pStatus) GetAuthor(cchAuthor, *wzAuthor, *pcchActual) GetVendorGUID(*pguidVendor.GUID) GetVersion(cchVersion, *wzVersion, *pcchActual) GetSpecVersion(cchSpecVersion, *wzSpecVersion, *pcchActual) GetFriendlyName(cchFriendlyName, *wzFriendlyName, *pcchActual) EndInterface Interface IWICBitmapCodecInfo Extends IWICComponentInfo GetContainerFormat(*pguidContainerFormat.GUID) GetPixelFormats(cFormats, *pguidPixelFormats.GUID, *pcActual.l) GetColorManagementVersion(cchColorManagementVersion, *wzColorManagementVersion, *pcchActual.l) GetDeviceManufacturer(cchDeviceManufacturer, *wzDeviceManufacturer, *pcchActual.l) GetDeviceModels(cchDeviceModels, *wzDeviceModels, *pcchActual.l) GetMimeTypes(cchMimeTypes, *wzMimeTypes, *pcchActual.l) GetFileExtensions(cchFileExtensions, *wzFileExtensions, *pcchActual.l) DoesSupportAnimation(*pfSupportAnimation.l) DoesSupportChromakey(*pfSupportChromakey.l) DoesSupportLossless(*pfSupportLossless.l) DoesSupportMultiframe(*pfSupportMultiframe.l) MatchesMimeType(wzMimeType, *pfMatches) EndInterface Interface IWICImagingFactory Extends IUnknown CreateDecoderFromFilename(wzFilename.p-unicode, *pguidVendor, dwDesiredAccess, metadataOptions, *ppIDecoder) CreateDecoderFromStream(*pIStream, *pguidVendor, metadataOptions, *ppIDecoder) CreateDecoderFromFileHandle(hFile, *pguidVendor, metadataOptions, *ppIDecoder) CreateComponentInfo(clsidComponent, *ppIInfo) CreateDecoder(guidContainerFormat, *pguidVendor, *ppIDecoder) CreateEncoder(guidContainerFormat, *pguidVendor, *ppIEncoder) CreatePalette(*ppIPalette) CreateFormatConverter(*ppIFormatConverter) CreateBitmapScaler(*ppIBitmapScaler) CreateBitmapClipper(*ppIBitmapClipper) CreateBitmapFlipRotator(*ppIBitmapFlipRotator) CreateStream(*ppIWICStream) CreateColorContext(*ppIWICColorContext) CreateColorTransformer(*ppIWICColorTransform) CreateBitmap(uiWidth, uiHeight, pixelFormat, option, *ppIBitmap) CreateBitmapFromSource(*piBitmapSource, option, *ppIBitmap) CreateBitmapFromSourceRect(*piBitmapSource, x, y, width, height, *ppIBitmap) CreateBitmapFromMemory(uiWidth, uiHeight, pixelFormat, cbStride, cbBufferSize, *pbBuffer, *ppIBitmap) CreateBitmapFromHBITMAP(hBitmap, hPalette, options, *ppIBitmap) CreateBitmapFromHICON(hIcon, *ppIBitmap) CreateComponentEnumerator(componentTypes, options, *ppIEnumUnknown) CreateFastMetadataEncoderFromDecoder(*pIDecoder, *ppIFastEncoder) CreateFastMetadataEncoderFromFrameDecode(*pIFrameDecoder, *ppIFastEncoder) CreateQueryWriter(guidMetadataFormat, *pguidVendor, *ppIQueryWriter) CreateQueryWriterFromReader(*pIQueryReader, *pguidVendor, *ppIQueryWriter) EndInterface Interface IWICStream Extends IStream InitializeFromIStream(Stream.IStream) InitializeFromFilename(*sFilename, AccessMode.l) InitializeFromMemory(*Buffer, BufferSize.l) InitializeFromIStreamRegion(Stream.IStream, Offset.q, MaxSize.q) EndInterface Interface IWICBitmapSource Extends IUnknown GetSize(*puiWidth, *puiHeight) GetPixelFormat(*pPixelFormat) GetResolution(*pDpiX, *pDpiY) CopyPalette(*pIPalette) CopyPixels(*prc, cbStride, cbBufferSize, *pbBuffer) EndInterface Interface IWICBitmapFlipRotator Extends IWICBitmapSource Initialize(*pISource, options) EndInterface Interface IWICBitmap Extends IWICBitmapSource Lock(*prcLock, flags, *ppILock) SetPalette(*pIPalette) SetResolution(dpiX.d, dpiY.d) EndInterface Interface IWICFormatConverter Extends IWICBitmapSource Initialize(*pISource, dstFormat, dither, *pIPalette, alphaThresholdPercent.d, paletteTranslate) CanConvert(srcPixelFormat, dstPixelFormat, *pfCanConvert) EndInterface Interface IWICBitmapDecoder Extends IUnknown QueryCapability(*pIStream, *pdwCapability) Initialize(*pIStream, cacheOptions) GetContainerFormat(*pguidContainerFormat) GetDecoderInfo(*ppIDecoderInfo) CopyPalette(*pIPalette) GetMetadataQueryReader(*ppIMetadataQueryReader) GetPreview(*ppIBitmapSource) GetColorContexts(cCount, *ppIColorContexts, *pcActualCount) GetThumbnail(*ppIThumbnail) GetFrameCount(*pCount) GetFrame(index, *ppIBitmapFrame) EndInterface Interface IWICBitmapFrameDecode Extends IWICBitmapSource GetMetadataQueryReader(*ppIMetadataQueryReader) GetColorContexts(cCount, *ppIColorContexts, *pcActualCount) GetThumbnail(*ppIThumbnail) EndInterface Interface IWICBitmapScaler Extends IWICBitmapSource Initialize(*pISource, uiWidth, uiHeight, mode) EndInterface Macro WIC_DEFINE_GUID(label,l1,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) label: Data.l l1 Data.w w1,w2 Data.b b1,b2,b3,b4,b5,b6,b7,b8 EndMacro DataSection WIC_DEFINE_GUID(CLSID_WICImagingFactory , $cacaf262,$9370,$4615,$a1,$3b,$9f,$55,$39,$da,$4c,$0a) WIC_DEFINE_GUID(IID_IWICImagingFactory , $ec5ec8a9,$c395,$4314,$9c,$77,$54,$d7,$a9,$35,$ff,$70) WIC_DEFINE_GUID(CLSID_WICImagingFactory2 , $317d06e8,$5f24,$433d,$bd,$f7,$79,$ce,$68,$d8,$ab,$c2) WIC_DEFINE_GUID(IID_IWICImagingFactory2 , $7B816B45,$1996,$4476,$B1,$32,$DE,$9E,$24,$7C,$8A,$F0) WIC_DEFINE_GUID(GUID_ContainerFormatBmp , $0af1d87e,$fcfe,$4188,$bd,$eb,$a7,$90,$64,$71,$cb,$e3) WIC_DEFINE_GUID(GUID_ContainerFormatPng , $1b7cfaf4,$713f,$473c,$bb,$cd,$61,$37,$42,$5f,$ae,$af) WIC_DEFINE_GUID(GUID_ContainerFormatJpeg , $19e4a5aa,$5662,$4fc5,$a0,$c0,$17,$58,$02,$8e,$10,$57) WIC_DEFINE_GUID(GUID_ContainerFormatTiff , $163bcc30,$e2e9,$4f0b,$96,$1d,$a3,$e9,$fd,$b7,$88,$a3) WIC_DEFINE_GUID(GUID_ContainerFormatGif , $1f8a5601,$7d4d,$4cbd,$9c,$82,$1b,$c8,$d4,$ee,$b9,$a5) WIC_DEFINE_GUID(GUID_WICPixelFormat32bppBGR , $6fddc324,$4e03,$4bfe,$b1,$85,$3d,$77,$76,$8d,$c9,$0e) WIC_DEFINE_GUID(GUID_WICPixelFormat32bppPBGRA , $6fddc324,$4e03,$4bfe,$b1,$85,$3d,$77,$76,$8d,$c9,$10) WIC_DEFINE_GUID(IID_IWICPixelFormatInfo , $E8EDA601,$3D48,$431a,$AB,$44,$69,$05,$9B,$E8,$8B,$BE) WIC_DEFINE_GUID(IID_IWICComponentInfo , $23BC3F0A,$698B,$4357,$88,$6B,$F2,$4D,$50,$67,$13,$34) WIC_DEFINE_GUID(IID_IWICBitmapSource , $00000120,$a8f2,$4877,$ba,$0a,$fd,$2b,$66,$45,$fb,$94) WIC_DEFINE_GUID(IID_IWICBitmapCodecInfo , $E87A44C4,$B76E,$4C47,$8B, 9,$29,$8E,$B1,$2A,$27,$14) EndDataSection Global g__pIWICFactory.IWICImagingFactory Procedure WIC_Initialize_Factory() ProcedureReturn CoCreateInstance_(?CLSID_WICImagingFactory, 0, #CLSCTX_INPROC_SERVER, ?IID_IWICImagingFactory, @g__pIWICFactory) EndProcedure Procedure WIC_CreateDIBSectionFromBitmapSource(*pToRenderBitmapSource.IWICBitmapSource, *hDIBBitmap.Integer, iOriantation = 0) Protected bminfo.BITMAPINFO Protected width, height, cbStride, cbImage, hdcScreen, *pvImageBits Protected hr.l = *pToRenderBitmapSource\GetSize(@width, @height) If (iOriantation & #WICBitmapTransformRotate90) Or (iOriantation & #WICBitmapTransformRotate270) cbStride = height height = width width = cbStride EndIf ZeroMemory_(@bminfo, SizeOf(bminfo)) bminfo\bmiHeader\biSize = SizeOf(BITMAPINFOHEADER) bminfo\bmiHeader\biWidth = width bminfo\bmiHeader\biHeight = 0 - height bminfo\bmiHeader\biPlanes = 1 bminfo\bmiHeader\biBitCount = 32 bminfo\bmiHeader\biCompression = #BI_RGB hdcScreen = GetDC_(0) *hDIBBitmap\i = CreateDIBSection_(hdcScreen, @bminfo, #DIB_RGB_COLORS, @*pvImageBits, #Null, 0) ReleaseDC_(0, hdcScreen) cbStride = width * 4 cbImage = cbStride * height If iOriantation = 0 hr = *pToRenderBitmapSource\CopyPixels(#Null, cbStride, cbImage, *pvImageBits) If Not WIC_SUCCEEDED(hr) DeleteObject_(*hDIBBitmap\i) *hDIBBitmap\i = 0 EndIf ProcedureReturn hr EndIf Protected *pIFlipRotator.IWICBitmapFlipRotator hr = g__pIWICFactory\CreateBitmapFlipRotator(@*pIFlipRotator) If WIC_SUCCEEDED(hr) hr = *pIFlipRotator\Initialize(*pToRenderBitmapSource, iOriantation) hr = *pIFlipRotator\CopyPixels(#Null, cbStride, cbImage, *pvImageBits) If Not WIC_SUCCEEDED(hr) DeleteObject_(*hDIBBitmap\i) *hDIBBitmap\i = 0 EndIf *pIFlipRotator\Release() ProcedureReturn hr EndIf EndProcedure Procedure WIC_CatchImage(*Memory, iSize, *cx.Integer = 0, *cy.Integer = 0, *iFrame.Integer = 0) Protected *pDecoder.IWICBitmapDecoder Protected *pFrame.IWICBitmapFrameDecode Protected *pToRenderBitmapSource.IWICBitmapSource Protected *pScaler.IWICBitmapScaler Protected *pConverter.IWICFormatConverter Protected *WICBitmapSrc.IWICBitmapSource Protected *IWICStream.IWICStream Protected hBitmap, width, height, hr.l, bDoReSize, index If Not g__pIWICFactory Or g__pIWICFactory\CreateStream(@*IWICStream) Debug "g__pIWICFactory !" ProcedureReturn 0 EndIf hr = *IWICStream\InitializeFromMemory(*Memory, iSize) If WIC_SUCCEEDED(hr) hr = g__pIWICFactory\CreateDecoderFromStream(*IWICStream, 0, 0, @*pDecoder) If WIC_SUCCEEDED(hr) If *iFrame index = *iFrame\i EndIf hr = *pDecoder\GetFrame(index, @*pFrame) If WIC_SUCCEEDED(hr) If *iFrame And *iFrame\i = 0 *pDecoder\GetFrameCount(@*iFrame\i) EndIf Protected *pQueryReader.IWICMetadataQueryReader hr = *pFrame\GetMetadataQueryReader(@*pQueryReader) If WIC_SUCCEEDED(hr) Protected bitmapTransformationOptions, VariantMetaData.VARIANT hr = *pQueryReader\GetMetadataByName(@"/app1/{ushort=0}/{ushort=274}", @VariantMetaData) If WIC_SUCCEEDED(hr) Select VariantMetaData\iVal Case 2 bitmapTransformationOptions = #WICBitmapTransformRotate0 | #WICBitmapTransformFlipHorizontal Case 3 bitmapTransformationOptions = #WICBitmapTransformRotate180 Case 4 bitmapTransformationOptions = #WICBitmapTransformRotate180 | #WICBitmapTransformFlipHorizontal Case 5 bitmapTransformationOptions = #WICBitmapTransformRotate270 | #WICBitmapTransformFlipHorizontal Case 6 bitmapTransformationOptions = #WICBitmapTransformRotate90 Case 7 bitmapTransformationOptions = #WICBitmapTransformRotate90 | #WICBitmapTransformFlipHorizontal Case 8 bitmapTransformationOptions = #WICBitmapTransformRotate270 EndSelect EndIf *pQueryReader\Release() EndIf hr = *pFrame\QueryInterface(?IID_IWICBitmapSource, @*WICBitmapSrc) If WIC_SUCCEEDED(hr) hr = *WICBitmapSrc\GetSize(@width, @height) hr = g__pIWICFactory\CreateBitmapScaler(@*pScaler) If WIC_SUCCEEDED(hr) If *cx And *cx\i width = *cx\i bDoReSize = #True EndIf If *cy And *cy\i height = *cy\i bDoReSize = #True EndIf If (bitmapTransformationOptions & #WICBitmapTransformRotate90) Or (bitmapTransformationOptions & #WICBitmapTransformRotate270) hr = height height = width width = hr EndIf hr = *pScaler\Initialize(*WICBitmapSrc, width, height, #WICBitmapInterpolationModeFant) If WIC_SUCCEEDED(hr) g__pIWICFactory\CreateFormatConverter(@*pConverter); If WIC_SUCCEEDED(hr) hr = *pConverter\Initialize(*pScaler, ?GUID_WICPixelFormat32bppBGR, 0, #Null, 0.0, 0) If WIC_SUCCEEDED(hr) hr = *pConverter\QueryInterface(?IID_IWICBitmapSource, @*pToRenderBitmapSource) If WIC_SUCCEEDED(hr) hr = WIC_CreateDIBSectionFromBitmapSource(*pToRenderBitmapSource, @hBitmap, bitmapTransformationOptions) If WIC_SUCCEEDED(hr) If *cx Or *cy *pToRenderBitmapSource\GetSize(@width, @height) If *cx And *cx\i = 0 *cx\i = width EndIf If *cy And *cy\i = 0 *cy\i = height EndIf EndIf EndIf *pToRenderBitmapSource\Release() EndIf EndIf EndIf EndIf EndIf *WICBitmapSrc\Release() EndIf *pFrame\Release() EndIf *pDecoder\Release() EndIf *IWICStream\Release() EndIf ProcedureReturn hBitmap EndProcedure Procedure WIC_LoadImage(sFile.s, *cx.Integer = 0, *cy.Integer = 0, *iFrame.Integer = 0) Protected hFile, buffer, cbSize, hBitmap hFile = ReadFile(#PB_Any, sFile) If hFile cbSize = Lof(hFile) If cbSize buffer = AllocateMemory(cbSize) If buffer If ReadData(hFile, buffer, cbSize) hBitmap = WIC_CatchImage(buffer, cbSize, *cx, *cy, *iFrame) EndIf FreeMemory(buffer) EndIf EndIf CloseFile(hFile) EndIf ProcedureReturn hBitmap EndProcedure Procedure WIC_Enum_Decoders() Protected hr.l, spEnum.IEnumUnknown, spEnumElement.IWICComponentInfo, cbActual Protected sName.s{261}, sExtentions.s{261} Protected IWICBitmapCodecInfo.IWICBitmapCodecInfo If Not g__pIWICFactory Debug "g__pIWICFactory !" ProcedureReturn 0 EndIf hr = g__pIWICFactory\CreateComponentEnumerator(1, 0, @spEnum) If SUCCEEDED_(hr) While (#S_OK = spEnum\Next(1, @spEnumElement, @cbActual)) hr = spEnumElement\QueryInterface(?IID_IWICBitmapCodecInfo, @IWICBitmapCodecInfo) If SUCCEEDED_(hr) IWICBitmapCodecInfo\GetFriendlyName(260, @sName, @cbActual) Debug sName IWICBitmapCodecInfo\GetFileExtensions(260, @sExtentions, @cbActual) Debug #TAB$ + sExtentions + #CRLF$ IWICBitmapCodecInfo\Release() EndIf spEnumElement\Release() Wend spEnum\Release() EndIf EndProcedure ;- example CompilerIf #PB_Compiler_IsMainFile CoInitialize_(0) WIC_Initialize_Factory() ;WIC_Enum_Decoders() Define cx = 800, cy = 600, iFrame, sFile.s, hBitmap sFile = OpenFileRequester("Images files", "", "All files (*.*)|*.*", 0) If sFile <> "" hBitmap = WIC_LoadImage(sFile, @cx, @cy, @iFrame) If Not hBitmap Debug "Error loading " + sFile Else If OpenWindow(0, 0, 0, 800, 600, "WIC Image", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ImageGadget(0, 0, 0, 800, 600, hBitmap) Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf EndIf EndIf CompilerEndIf
"Daddy, I'll run faster, then it is not so far..."
Re: Windows 10 OCR and Face detection
Yes, both WIC_CatchImage() and WIC_LoadImage() return a hBitmap. You have to free it with DeleteObject_() API.
But the actual problem was missing release of *pConverter and *pScaler interfaces in WIC_CatchImage.
Re: Windows 10 OCR and Face detection
Thx fryquez, good to know. But I really dont know how to fix this. Could you help please?
"Daddy, I'll run faster, then it is not so far..."
Re: Windows 10 OCR and Face detection
I have updated the code on page 2.
Re: Windows 10 OCR and Face detection
¡Muchas gracias!
"Daddy, I'll run faster, then it is not so far..."
Re: Windows 10 OCR and Face detection
Good Morning,
I'm trying to find the text as well as the position of the text on the page. I saw that this is possible in the official Microsoft documentation, but I can't seem to adapt this.
Can you help understand and adapt this?
Thanks in advance
Gally
I'm trying to find the text as well as the position of the text on the page. I saw that this is possible in the official Microsoft documentation, but I can't seem to adapt this.
Can you help understand and adapt this?
Thanks in advance
Gally
GallyHC
http://www.koakdesign.info
http://www.koakdesign.info
Re: Windows 10 OCR and Face detection
I added the pastbin link to first post. This updated version should give you the rectangle of every detected word.
Re: Windows 10 OCR and Face detection
Alors comment dire --> Juste un grand merci ^^
So how can I say --> Just a big thank you ^^
So how can I say --> Just a big thank you ^^
GallyHC
http://www.koakdesign.info
http://www.koakdesign.info