|
|
导航: |
论坛 -> 发布代码
斑竹:liumazi,ruralboy |
|
作者: |
|
2022/6/10 10:24:06 |
标题: |
Delphi Tesseract 5.1 使用演示 |
浏览:1792 |
|
加入我的收藏 |
楼主: |
演示代码来自https://github.com/r1me/TTesseractOCR4和https://blog.51cto.com/u_15503296/5212483。前者提供了TTesseractOCR4类和4个演示程序,后者基于TTesseractOCR类做了一个显示程序。TTesseractOCR4类是基于Tesseract4的,为了适应Tessract 5.1版本,本人对TTesseractOCR4做了适应性修改,并增加了一点小功能,以及修正了一些错误。所有演示项目都使用Delphi 10.3重新建了项目文件。
Tesseract OCR V5.1程序的下载和安装可参考:https://www.jianshu.com/p/f7cb0b3f337a
本人修正了TTesseractOCR4的Record和Enum的字节对齐问题。程序在Delphi环境中原使用默认的{$A8}和{$Z1},现改为{$A4}和{$Z4},这是c语言普遍采用的字节对齐方式。估计TTesseractOCR4的作者主要使用的是Lazarus/Free Pascal开发环境,其默认的字节对齐方式就是{$A4}和{$Z4,否则他用Delphi的话,马上就会发现此错误。
本人在TesseractOCR.Consts.pas增加了一个自动把DLL目录增加到搜索目录的功能(AddDLLPathToSearchPath),并且把DLL目录默认为:Win64时为'C:\Program Files\Tesseract-OCR'、Win32时为'C:\Program Files\Tesseract-OCR\DLL32',这样就不需要把DLL文件和exe文件放在同一目录,或设置系统环境变量里面的path变量了。需根据自己的需要作修改。 const DLLPath = {$IFDEF WIN64} 'C:\Program Files\Tesseract-OCR' {$ELSE} 'C:\Program Files\Tesseract-OCR\DLL32' {$ENDIF};
有问题欢迎讨论。
----------------------------------------------
- |
作者: |
|
2022/6/10 10:29:44 |
1楼: |
附件超过了19.9M的限制,所以分两次送。
原名分别是: Tessract_5.1_Delphi_Demos.part1.rar 和 Tessract_5.1_Delphi_Demos.part2.rar
----------------------------------------------
-
|
作者: |
|
2022/6/10 10:55:44 |
2楼: |
感谢分享
----------------------------------------------
业余编程爱好者
|
作者: |
|
2022/6/10 11:38:01 |
3楼: |
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Align_fields_(Delphi) 在 {$A 4} 状态下,记录类型中声明的字段(不使用压缩修饰符)和类结构中的字段在双字边界上对齐。 在 {$A 8} 或 {$A+} 状态下,记录类型中声明的字段(不使用压缩修饰符)和类结构中的字段将在四字边界上对齐。
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Internal_Data_Formats_(Delphi)#Record_Types 枚举类型 如果枚举的值不超过 256 个,并且该类型是在 {$Z 1} 状态(默认值)中声明的,则该枚举类型将存储为无符号字节。如果枚举类型具有 256 个以上的值,或者该类型是在 {$Z 2} 状态下声明的,则该类型将存储为无符号单词。如果在 {$Z 4} 状态下声明枚举类型,则该类型将存储为无符号双字。
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Minimum_enumeration_size_(Delphi) $Z 指令控制 Delphi 枚举类型的最小存储大小。
如果枚举的值不超过 256 个,并且该类型是在 {$Z 1} 状态(默认值)中声明的,则枚举类型存储为无符号字节。如果枚举类型具有 256 个以上的值,或者该类型是在 {$Z 2} 状态下声明的,则该类型将存储为无符号单词。最后,如果在 {$Z 4} 状态下声明枚举类型,则该类型将存储为无符号双字。
{$Z 2} 和 {$Z 4} 状态对于与 C 和 C++ 库进行交互非常有用,这些库通常将枚举类型表示为单词或双词。
注意:为了向后兼容Delphi和Object Pascal的早期版本,还支持指令{$Z-}和{$Z+}。它们分别对应于 {$Z 1} 和 {$Z 4}。
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Compiling 最小枚举大小
指定要为枚举分配的最小内存量。选择是字节{$Z 1},单词{$Z 2},双字{$Z 4}。Down Arrow弹出按钮在项目选项页面上的“公共项”中进行了介绍。
默认值 = 字节
记录字段对齐方式
控制 Delphi 记录类型和类结构中字段的对齐方式。单击向下箭头以从可能的值中进行选择:
如果选择选项“关闭”(等效于 {$A 1})或禁用该选项(等效于 {$A-}),则字段永远不会对齐。所有记录和类结构都已打包。 如果选择“Byte”(等效于 {$A 2}),则记录类型中声明的字段(不使用压缩修饰符)和类结构中的字段将在字节边界上对齐。 如果选择“Word”(等效于 {$A 2}),则记录类型中声明的字段(不使用压缩修饰符)和类结构中的字段将在单词边界上对齐。 如果选择双字(等效于 {$A 4}),则记录类型中声明的字段(不使用压缩修饰符)和类结构中的字段将在双字边界上对齐。 如果选择 Quad Word(等效于 {$A 8} 或 {$A+}),则记录类型中声明的字段(不使用压缩修饰符)和类结构中的字段将在四元字边界上对齐。 无论 $A 指令的状态如何,变量和类型化常量始终对齐以实现最佳访问。如果将选项设置为 8(四字),则执行速度更快。 这是默认设置。
----------------------------------------------
-
|
|