Files
MastersThesis/thesis_output/plantilla_individual.htm
sergio 0e074f6101
Some checks failed
build_docker / essential (push) Successful in 1s
build_docker / build_paddle_ocr (push) Successful in 6m9s
build_docker / build_easyocr_gpu (push) Has been cancelled
build_docker / build_doctr (push) Has been cancelled
build_docker / build_doctr_gpu (push) Has been cancelled
build_docker / build_raytune (push) Has been cancelled
build_docker / build_easyocr (push) Has been cancelled
build_docker / build_paddle_ocr_gpu (push) Has been cancelled
word gen
2026-01-24 16:09:26 +01:00

5919 lines
703 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<html xmlns="http://www.w3.org/TR/REC-html40" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<meta content="Word.Document" name="ProgId"/>
<meta content="Microsoft Word 15" name="Generator"/>
<meta content="Microsoft Word 15" name="Originator"/>
<link href="plantilla_individual_files/filelist.xml" rel="File-List"/>
<link href="plantilla_individual_files/editdata.mso" rel="Edit-Time-Data"/>
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>Conchi de Miguel</o:Author>
<o:LastAuthor>Sergio Jimenez</o:LastAuthor>
<o:Revision>2</o:Revision>
<o:TotalTime>75</o:TotalTime>
<o:LastPrinted>2019-08-05T13:11:00Z</o:LastPrinted>
<o:Created>2025-12-15T22:02:00Z</o:Created>
<o:LastSaved>2025-12-15T22:02:00Z</o:LastSaved>
<o:Pages>21</o:Pages>
<o:Words>3037</o:Words>
<o:Characters>17313</o:Characters>
<o:Company>Universidad Internacional de La Rioja Facultad de Educación</o:Company>
<o:Lines>144</o:Lines>
<o:Paragraphs>40</o:Paragraphs>
<o:CharactersWithSpaces>20310</o:CharactersWithSpaces>
<o:Version>16.00</o:Version>
</o:DocumentProperties>
<o:CustomDocumentProperties>
<o:ContentTypeId dt:dt="string">0x010100DF3D7C797EA12745A270EF30E38719B9</o:ContentTypeId>
<o:MediaServiceImageTags dt:dt="string"></o:MediaServiceImageTags>
<o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_Enabled dt:dt="string">true</o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_Enabled>
<o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_SetDate dt:dt="string">2025-12-15T20:34:56Z</o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_SetDate>
<o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_Method dt:dt="string">Standard</o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_Method>
<o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_Name dt:dt="string">defa4170-0d19-0005-0004-bc88714345d2</o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_Name>
<o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_SiteId dt:dt="string">d9ff98f8-1670-401f-bf78-0b33bbd90cfe</o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_SiteId>
<o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_ActionId dt:dt="string">7e5380b3-cad0-4ca2-b0ac-f3b167232e81</o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_ActionId>
<o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_ContentBits dt:dt="string">0</o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_ContentBits>
<o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_Tag dt:dt="string">10, 3, 0, 1</o:MSIP_Label_defa4170-0d19-0005-0004-bc88714345d2_Tag>
</o:CustomDocumentProperties>
</xml><![endif]-->
<link href="plantilla_individual_files/item0001.xml" rel="dataStoreItem" target="plantilla_individual_files/props002.xml"/>
<link href="plantilla_individual_files/item0003.xml" rel="dataStoreItem" target="plantilla_individual_files/props004.xml"/>
<link href="plantilla_individual_files/item0005.xml" rel="dataStoreItem" target="plantilla_individual_files/props006.xml"/>
<link href="plantilla_individual_files/item0007.xml" rel="dataStoreItem" target="plantilla_individual_files/props008.xml"/>
<link href="plantilla_individual_files/themedata.thmx" rel="themeData"/>
<link href="plantilla_individual_files/colorschememapping.xml" rel="colorSchemeMapping"/>
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:GrammarState>Clean</w:GrammarState>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>ES</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:StyleSortMethod>0</w:StyleSortMethod>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="&#45;-"/>
<m:smallFrac/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="376">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
QFormat="true" Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
QFormat="true" Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
QFormat="true" Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
QFormat="true" Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" Priority="0" SemiHidden="true"
UnhideWhenUsed="true" Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="59" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Smart Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hashtag"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Unresolved Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Smart Link"/>
</w:LatentStyles>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;
mso-font-charset:2;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-536869121 1107305727 33554432 0 415 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-469750017 -1040178053 9 0 511 0;}
@font-face
{font-family:"Calibri Light";
panose-1:2 15 3 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-469750017 -1040178053 9 0 511 0;}
@font-face
{font-family:TimesNewRomanPSMT;
panose-1:0 0 0 0 0 0 0 0 0 0;
mso-font-alt:"MS Mincho";
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:auto;
mso-font-signature:1 134676480 16 0 131073 0;}
@font-face
{font-family:"Wingdings 3";
panose-1:5 4 1 2 1 8 7 7 7 7;
mso-font-charset:2;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
{font-family:UnitOT-Light;
mso-font-alt:Calibri;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-2147483409 1342185595 40 0 1 0;}
@font-face
{font-family:"Open Sans";
panose-1:2 11 6 6 3 5 4 2 2 4;
mso-font-alt:Calibri;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-536870161 1073750107 40 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
h1
{mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Heading 1 Char";
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:18.0pt;
text-align:justify;
text-indent:-18.0pt;
line-height:150%;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:1;
mso-list:l22 level1 lfo18;
font-size:18.0pt;
mso-bidi-font-size:16.0pt;
font-family:"Calibri Light",sans-serif;
mso-ascii-font-family:"Calibri Light";
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Calibri Light";
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
color:#0098CD;
text-transform:uppercase;
mso-font-kerning:16.0pt;
mso-ansi-language:ES;
mso-fareast-language:ES;
font-weight:normal;
mso-bidi-font-weight:bold;}
h2
{mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"Heading 2 Char";
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:50.0pt;
text-align:justify;
text-indent:-21.6pt;
line-height:150%;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:2;
mso-list:l22 level2 lfo18;
font-size:14.0pt;
font-family:"Calibri Light",sans-serif;
mso-ascii-font-family:"Calibri Light";
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Calibri Light";
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:Arial;
color:#0098CD;
text-transform:uppercase;
mso-ansi-language:ES;
mso-fareast-language:ES;
font-weight:normal;
mso-bidi-font-weight:bold;
mso-bidi-font-style:italic;}
h3
{mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"Heading 3 Char";
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:35.45pt;
text-align:justify;
text-indent:-35.45pt;
line-height:150%;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:3;
mso-list:l22 level3 lfo18;
font-size:12.0pt;
mso-bidi-font-size:13.0pt;
font-family:"Calibri Light",sans-serif;
mso-ascii-font-family:"Calibri Light";
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Calibri Light";
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
h4
{mso-style-priority:9;
mso-style-qformat:yes;
mso-style-parent:"List Paragraph";
mso-style-link:"Heading 4 Char";
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:42.55pt;
mso-add-space:auto;
text-align:justify;
text-indent:-42.55pt;
line-height:150%;
mso-pagination:widow-orphan;
mso-outline-level:4;
mso-list:l22 level4 lfo18;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;
font-weight:normal;}
h4.CxSpFirst
{mso-style-priority:9;
mso-style-qformat:yes;
mso-style-parent:"List Paragraph";
mso-style-link:"Heading 4 Char";
mso-style-next:Normal;
mso-style-type:export-only;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:0cm;
margin-left:42.55pt;
mso-add-space:auto;
text-align:justify;
text-indent:-42.55pt;
line-height:150%;
mso-pagination:widow-orphan;
mso-outline-level:4;
mso-list:l22 level4 lfo18;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;
font-weight:normal;}
h4.CxSpMiddle
{mso-style-priority:9;
mso-style-qformat:yes;
mso-style-parent:"List Paragraph";
mso-style-link:"Heading 4 Char";
mso-style-next:Normal;
mso-style-type:export-only;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:42.55pt;
mso-add-space:auto;
text-align:justify;
text-indent:-42.55pt;
line-height:150%;
mso-pagination:widow-orphan;
mso-outline-level:4;
mso-list:l22 level4 lfo18;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;
font-weight:normal;}
h4.CxSpLast
{mso-style-priority:9;
mso-style-qformat:yes;
mso-style-parent:"List Paragraph";
mso-style-link:"Heading 4 Char";
mso-style-next:Normal;
mso-style-type:export-only;
margin-top:0cm;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:42.55pt;
mso-add-space:auto;
text-align:justify;
text-indent:-42.55pt;
line-height:150%;
mso-pagination:widow-orphan;
mso-outline-level:4;
mso-list:l22 level4 lfo18;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;
font-weight:normal;}
h5
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-link:"Heading 5 Char";
mso-style-next:Normal;
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.0pt;
margin-left:85.8pt;
text-align:justify;
text-indent:-50.4pt;
line-height:150%;
mso-pagination:widow-orphan;
mso-outline-level:5;
mso-list:l9 level5 lfo8;
font-size:13.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;
font-style:italic;}
h6
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"Heading 6 Char";
mso-style-next:Normal;
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.0pt;
margin-left:93.0pt;
text-align:justify;
text-indent:-57.6pt;
line-height:150%;
mso-pagination:widow-orphan;
mso-outline-level:6;
mso-list:l9 level6 lfo8;
font-size:12.0pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"Heading 7 Char";
mso-style-next:Normal;
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.0pt;
margin-left:100.2pt;
text-align:justify;
text-indent:-64.8pt;
line-height:150%;
mso-pagination:widow-orphan;
mso-outline-level:7;
mso-list:l9 level7 lfo8;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"Heading 8 Char";
mso-style-next:Normal;
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.0pt;
margin-left:107.4pt;
text-align:justify;
text-indent:-72.0pt;
line-height:150%;
mso-pagination:widow-orphan;
mso-outline-level:8;
mso-list:l9 level8 lfo8;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;
font-style:italic;}
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"Heading 9 Char";
mso-style-next:Normal;
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.0pt;
margin-left:114.6pt;
text-align:justify;
text-indent:-79.2pt;
line-height:150%;
mso-pagination:widow-orphan;
mso-outline-level:9;
mso-list:l9 level9 lfo8;
font-size:12.0pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri Light",sans-serif;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoIndex1, li.MsoIndex1, div.MsoIndex1
{mso-style-update:auto;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:36.0pt;
text-align:justify;
text-indent:-18.0pt;
line-height:150%;
mso-pagination:widow-orphan;
mso-list:l19 level1 lfo9;
font-size:14.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
text-transform:uppercase;
mso-ansi-language:ES;
mso-fareast-language:ES;
font-weight:bold;
mso-bidi-font-weight:normal;}
p.MsoIndex2, li.MsoIndex2, div.MsoIndex2
{mso-style-update:auto;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:35.45pt;
text-align:justify;
text-indent:-35.45pt;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
text-transform:uppercase;
mso-ansi-language:ES;
mso-fareast-language:ES;
font-weight:bold;
mso-bidi-font-weight:normal;}
p.MsoIndex3, li.MsoIndex3, div.MsoIndex3
{mso-style-update:auto;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:11.05pt;
text-align:justify;
text-indent:-11.05pt;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoIndex4, li.MsoIndex4, div.MsoIndex4
{mso-style-update:auto;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:11.05pt;
text-align:justify;
text-indent:-11.05pt;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;
font-style:italic;
mso-bidi-font-style:normal;}
p.MsoToc1, li.MsoToc1, div.MsoToc1
{mso-style-update:auto;
mso-style-priority:39;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoToc2, li.MsoToc2, div.MsoToc2
{mso-style-update:auto;
mso-style-priority:39;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:11.05pt;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoToc3, li.MsoToc3, div.MsoToc3
{mso-style-update:auto;
mso-style-priority:39;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:22.0pt;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoToc4, li.MsoToc4, div.MsoToc4
{mso-style-update:auto;
mso-style-priority:39;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:33.0pt;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoToc8, li.MsoToc8, div.MsoToc8
{mso-style-update:auto;
mso-style-noshow:yes;
mso-style-priority:39;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:77.0pt;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoToc9, li.MsoToc9, div.MsoToc9
{mso-style-update:auto;
mso-style-noshow:yes;
mso-style-priority:39;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:88.0pt;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
{mso-style-link:"Footnote Text Char";
margin:0cm;
text-align:justify;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoCommentText, li.MsoCommentText, div.MsoCommentText
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-link:"Comment Text Char";
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoHeader, li.MsoHeader, div.MsoHeader
{mso-style-priority:99;
mso-style-link:"Header Char";
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
tab-stops:center 212.6pt right 425.2pt;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoFooter, li.MsoFooter, div.MsoFooter
{mso-style-priority:99;
mso-style-link:"Footer Char";
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
tab-stops:center 212.6pt right 425.2pt;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoCaption, li.MsoCaption, div.MsoCaption
{mso-style-priority:35;
mso-style-qformat:yes;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;
font-weight:bold;}
p.MsoTof, li.MsoTof, div.MsoTof
{mso-style-priority:99;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
span.MsoFootnoteReference
{mso-style-noshow:yes;
mso-style-priority:99;
vertical-align:super;}
span.MsoCommentReference
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-ansi-font-size:8.0pt;
mso-bidi-font-size:8.0pt;}
p.MsoTitle, li.MsoTitle, div.MsoTitle
{mso-style-name:"Title\,Subtitulos 3er nivel";
mso-style-priority:10;
mso-style-unhide:no;
mso-style-link:"Title Char\,Subtitulos 3er nivel Char";
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
mso-outline-level:3;
font-size:12.0pt;
mso-bidi-font-size:16.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:14.0pt;
mso-ansi-language:ES;
mso-fareast-language:ES;
mso-bidi-font-weight:bold;
font-style:italic;
mso-bidi-font-style:normal;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
mso-style-parent:"";
color:#0563C1;
text-decoration:underline;
text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-noshow:yes;
mso-style-priority:99;
color:#954F72;
mso-themecolor:followedhyperlink;
text-decoration:underline;
text-underline:single;}
p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"Comment Text";
mso-style-link:"Comment Subject Char";
mso-style-next:"Comment Text";
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;
font-weight:bold;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-noshow:yes;
mso-style-priority:99;
mso-style-link:"Balloon Text Char";
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:8.0pt;
font-family:"Tahoma",sans-serif;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:X-NONE;
mso-fareast-language:ES;}
p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
{mso-style-priority:1;
mso-style-unhide:no;
mso-style-parent:"";
mso-style-link:"No Spacing Char";
margin:0cm;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:EN-US;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:36.0pt;
mso-add-space:auto;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-type:export-only;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
mso-add-space:auto;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-type:export-only;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
mso-add-space:auto;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-type:export-only;
margin-top:0cm;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:36.0pt;
mso-add-space:auto;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoQuote, li.MsoQuote, div.MsoQuote
{mso-style-priority:29;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Quote Char";
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
color:#404040;
mso-ansi-language:ES;
mso-fareast-language:ES;
mso-bidi-font-style:italic;}
p.MsoBibliography, li.MsoBibliography, div.MsoBibliography
{mso-style-noshow:yes;
mso-style-priority:37;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
p.MsoTocHeading, li.MsoTocHeading, div.MsoTocHeading
{mso-style-name:"TOC Heading\,Tablas";
mso-style-priority:39;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
tab-stops:right dotted 453.0pt;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Arial;
mso-ansi-language:ES;
mso-fareast-language:ES;
mso-no-proof:yes;}
span.NoSpacingChar
{mso-style-name:"No Spacing Char";
mso-style-priority:1;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"No Spacing";
mso-ansi-font-size:11.0pt;
mso-bidi-font-size:11.0pt;
font-family:"Times New Roman",serif;
mso-fareast-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:EN-US;
mso-bidi-language:AR-SA;}
span.BalloonTextChar
{mso-style-name:"Balloon Text Char";
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Balloon Text";
mso-ansi-font-size:8.0pt;
mso-bidi-font-size:8.0pt;
font-family:"Tahoma",sans-serif;
mso-ascii-font-family:Tahoma;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Tahoma;
mso-bidi-font-family:Tahoma;
mso-fareast-language:ES;}
span.HeaderChar
{mso-style-name:"Header Char";
mso-style-priority:99;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:Header;
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman",serif;
mso-ascii-font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman";}
span.FooterChar
{mso-style-name:"Footer Char";
mso-style-priority:99;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:Footer;
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman",serif;
mso-ascii-font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman";}
span.Heading1Char
{mso-style-name:"Heading 1 Char";
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Heading 1";
mso-ansi-font-size:18.0pt;
mso-bidi-font-size:16.0pt;
font-family:"Calibri Light",sans-serif;
mso-ascii-font-family:"Calibri Light";
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Calibri Light";
mso-hansi-theme-font:major-latin;
color:#0098CD;
text-transform:uppercase;
mso-font-kerning:16.0pt;
mso-bidi-font-weight:bold;}
span.Heading2Char
{mso-style-name:"Heading 2 Char";
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Heading 2";
mso-ansi-font-size:14.0pt;
mso-bidi-font-size:14.0pt;
font-family:"Calibri Light",sans-serif;
mso-ascii-font-family:"Calibri Light";
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Calibri Light";
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:Arial;
color:#0098CD;
text-transform:uppercase;
mso-bidi-font-weight:bold;
mso-bidi-font-style:italic;}
span.Heading3Char
{mso-style-name:"Heading 3 Char";
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Heading 3";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:13.0pt;
font-family:"Calibri Light",sans-serif;
mso-ascii-font-family:"Calibri Light";
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Calibri Light";
mso-hansi-theme-font:major-latin;
font-weight:bold;}
span.TitleChar
{mso-style-name:"Title Char\,Subtitulos 3er nivel Char";
mso-style-priority:10;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Title\,Subtitulos 3er nivel";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:16.0pt;
font-family:"Arial",sans-serif;
mso-ascii-font-family:Arial;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Arial;
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:14.0pt;
mso-bidi-font-weight:bold;
font-style:italic;
mso-bidi-font-style:normal;}
span.Heading4Char
{mso-style-name:"Heading 4 Char";
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Heading 4";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
span.QuoteChar
{mso-style-name:"Quote Char";
mso-style-priority:29;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:Quote;
mso-ansi-font-size:11.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Arial",sans-serif;
mso-ascii-font-family:Arial;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Arial;
color:#404040;
mso-bidi-font-style:italic;}
span.Heading5Char
{mso-style-name:"Heading 5 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Heading 5";
mso-ansi-font-size:13.0pt;
mso-bidi-font-size:13.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";
font-weight:bold;
font-style:italic;}
span.Heading6Char
{mso-style-name:"Heading 6 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Heading 6";
mso-ansi-font-size:11.0pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";
font-weight:bold;}
span.Heading7Char
{mso-style-name:"Heading 7 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Heading 7";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";}
span.Heading8Char
{mso-style-name:"Heading 8 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Heading 8";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";
font-style:italic;}
span.Heading9Char
{mso-style-name:"Heading 9 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Heading 9";
mso-ansi-font-size:11.0pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri Light",sans-serif;
mso-ascii-font-family:"Calibri Light";
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Calibri Light";
mso-bidi-font-family:"Times New Roman";}
span.CommentTextChar
{mso-style-name:"Comment Text Char";
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Comment Text";
font-family:"Arial",sans-serif;
mso-ascii-font-family:Arial;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Arial;}
span.CommentSubjectChar
{mso-style-name:"Comment Subject Char";
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:"Comment Subject";
font-family:"Arial",sans-serif;
mso-ascii-font-family:Arial;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Arial;
font-weight:bold;}
p.Figuras, li.Figuras, div.Figuras
{mso-style-name:Figuras;
mso-style-update:auto;
mso-style-unhide:no;
mso-style-link:"Figuras Car";
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:center;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Arial;
mso-ansi-language:ES;
mso-fareast-language:ES;
font-style:italic;
mso-bidi-font-style:normal;}
span.FigurasCar
{mso-style-name:"Figuras Car";
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"";
mso-style-link:Figuras;
mso-ansi-font-size:11.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Arial;
font-style:italic;
mso-bidi-font-style:normal;}
p.PiedepginaSecciones, li.PiedepginaSecciones, div.PiedepginaSecciones
{mso-style-name:"Pie de página_Secciones";
mso-style-priority:19;
mso-style-unhide:no;
mso-style-qformat:yes;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:5.0pt;
margin-left:0cm;
text-align:right;
mso-pagination:widow-orphan;
tab-stops:right 411.0pt;
font-size:10.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:UnitOT-Light;
color:#0098CD;
mso-ansi-language:ES;
mso-fareast-language:ES;
mso-bidi-font-weight:bold;
mso-no-proof:yes;}
p.Ttulondices, li.Ttulondices, div.Ttulondices
{mso-style-name:"Título Índices";
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"Título Índices Car";
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
font-size:18.0pt;
font-family:"Calibri Light",sans-serif;
mso-ascii-font-family:"Calibri Light";
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Calibri Light";
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:Arial;
color:#0098CD;
mso-ansi-language:ES;
mso-fareast-language:EN-US;}
p.Pgina, li.Pgina, div.Pgina
{mso-style-name:Página;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:Footer;
mso-style-link:"Página Car";
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:right;
line-height:150%;
mso-pagination:widow-orphan;
tab-stops:center 212.6pt right 425.2pt;
font-size:12.0pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Arial;
mso-ansi-language:ES;
mso-fareast-language:ES;}
span.TtulondicesCar
{mso-style-name:"Título Índices Car";
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Título Índices";
mso-ansi-font-size:18.0pt;
mso-bidi-font-size:18.0pt;
font-family:"Calibri Light",sans-serif;
mso-ascii-font-family:"Calibri Light";
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Calibri Light";
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:Arial;
color:#0098CD;
mso-fareast-language:EN-US;}
span.PginaCar
{mso-style-name:"Página Car";
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-parent:"Footer Char";
mso-style-link:Página;
mso-ansi-font-size:11.0pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:Arial;}
span.FootnoteTextChar
{mso-style-name:"Footnote Text Char";
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"Footnote Text";
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
p.Ttulo1sinnumerar, li.Ttulo1sinnumerar, div.Ttulo1sinnumerar
{mso-style-name:"Título 1 sin numerar";
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"Heading 1";
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:1;
font-size:18.0pt;
mso-bidi-font-size:16.0pt;
font-family:"Calibri Light",sans-serif;
mso-ascii-font-family:"Calibri Light";
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Calibri Light";
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
color:#0098CD;
mso-font-kerning:16.0pt;
mso-ansi-language:ES;
mso-fareast-language:ES;
mso-bidi-font-weight:bold;}
p.Referenciasbibliogrficas, li.Referenciasbibliogrficas, div.Referenciasbibliogrficas
{mso-style-name:"Referencias bibliográficas";
mso-style-unhide:no;
mso-style-qformat:yes;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:14.2pt;
text-align:justify;
text-indent:-14.2pt;
line-height:150%;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:EN-US;
mso-fareast-language:ES;}
p.Anexo, li.Anexo, div.Anexo
{mso-style-name:Anexo;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"Título 1 sin numerar";
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:6.0pt;
margin-left:18.0pt;
text-align:justify;
text-indent:-18.0pt;
line-height:150%;
mso-pagination:widow-orphan;
page-break-after:avoid;
mso-outline-level:1;
mso-list:l2 level1 lfo23;
font-size:18.0pt;
mso-bidi-font-size:16.0pt;
font-family:"Calibri Light",sans-serif;
mso-ascii-font-family:"Calibri Light";
mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";
mso-hansi-font-family:"Calibri Light";
mso-hansi-theme-font:major-latin;
mso-bidi-font-family:"Times New Roman";
color:#0098CD;
mso-font-kerning:16.0pt;
mso-ansi-language:ES;
mso-fareast-language:ES;
mso-bidi-font-weight:bold;}
p.Piedefoto-tabla, li.Piedefoto-tabla, div.Piedefoto-tabla
{mso-style-name:"Pie de foto-tabla";
mso-style-priority:16;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-next:Normal;
margin-top:6.0pt;
margin-right:-10.75pt;
margin-bottom:0cm;
margin-left:-5.65pt;
text-align:center;
line-height:115%;
mso-pagination:widow-orphan;
font-size:9.5pt;
mso-bidi-font-size:9.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:UnitOT-Light;
color:#595959;
mso-themecolor:text1;
mso-themetint:166;
mso-ansi-language:EN-US;
mso-fareast-language:ES;
mso-bidi-font-style:italic;}
p.CuadroCmoestudiaryReferencias, li.CuadroCmoestudiaryReferencias, div.CuadroCmoestudiaryReferencias
{mso-style-name:"Cuadro «Cómo estudiar» y Referencias";
mso-style-priority:10;
mso-style-unhide:no;
mso-style-qformat:yes;
margin:0cm;
text-align:justify;
line-height:150%;
mso-pagination:widow-orphan;
tab-stops:2.0cm;
background:#E6F4F9;
border:none;
mso-border-top-alt:solid #0098CD .5pt;
mso-border-bottom-alt:solid #0098CD .5pt;
padding:0cm;
mso-padding-alt:4.0pt 0cm 1.0pt 0cm;
font-size:12.0pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:UnitOT-Light;
color:#333333;
letter-spacing:-.2pt;
mso-ansi-language:ES;
mso-fareast-language:ES;}
span.SpellE
{mso-style-name:"";
mso-spl-e:yes;}
span.GramE
{mso-style-name:"";
mso-gram-e:yes;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-size:10.0pt;
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-fareast-font-family:Calibri;
mso-hansi-font-family:Calibri;
mso-font-kerning:0pt;
mso-ligatures:none;
mso-ansi-language:ES;
mso-fareast-language:ES;}
/* Page Definitions */
@page
{mso-footnote-separator:url("plantilla_individual_files/header.htm") fs;
mso-footnote-continuation-separator:url("plantilla_individual_files/header.htm") fcs;
mso-endnote-separator:url("plantilla_individual_files/header.htm") es;
mso-endnote-continuation-separator:url("plantilla_individual_files/header.htm") ecs;}
@page WordSection1
{size:595.3pt 841.9pt;
margin:70.9pt 2.0cm 70.9pt 3.0cm;
mso-header-margin:35.45pt;
mso-footer-margin:35.45pt;
mso-page-numbers:roman-upper;
mso-title-page:yes;
mso-even-header:url("plantilla_individual_files/header.htm") eh1;
mso-header:url("plantilla_individual_files/header.htm") h1;
mso-even-footer:url("plantilla_individual_files/header.htm") ef1;
mso-footer:url("plantilla_individual_files/header.htm") f1;
mso-first-header:url("plantilla_individual_files/header.htm") fh1;
mso-first-footer:url("plantilla_individual_files/header.htm") ff1;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
@page WordSection2
{size:595.3pt 841.9pt;
margin:70.9pt 2.0cm 70.9pt 3.0cm;
mso-header-margin:35.45pt;
mso-footer-margin:35.45pt;
mso-page-numbers:1;
mso-even-header:url("plantilla_individual_files/header.htm") eh1;
mso-header:url("plantilla_individual_files/header.htm") h1;
mso-even-footer:url("plantilla_individual_files/header.htm") ef1;
mso-footer:url("plantilla_individual_files/header.htm") f1;
mso-first-header:url("plantilla_individual_files/header.htm") fh1;
mso-first-footer:url("plantilla_individual_files/header.htm") ff1;
mso-paper-source:0;}
div.WordSection2
{page:WordSection2;}
/* List Definitions */
@list l0
{mso-list-id:3169916;
mso-list-template-ids:201981983;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l0:level2
{mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:39.6pt;
text-indent:-21.6pt;}
@list l0:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:61.2pt;
text-indent:-25.2pt;}
@list l0:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:86.4pt;
text-indent:-32.4pt;}
@list l0:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:111.6pt;
text-indent:-39.6pt;}
@list l0:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:136.8pt;
text-indent:-46.8pt;}
@list l0:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-54.0pt;}
@list l0:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:187.2pt;
text-indent:-61.2pt;}
@list l0:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:216.0pt;
text-indent:-72.0pt;}
@list l1
{mso-list-id:58485289;
mso-list-template-ids:201981983;}
@list l1:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l1:level2
{mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:39.6pt;
text-indent:-21.6pt;}
@list l1:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:61.2pt;
text-indent:-25.2pt;}
@list l1:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:86.4pt;
text-indent:-32.4pt;}
@list l1:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:111.6pt;
text-indent:-39.6pt;}
@list l1:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:136.8pt;
text-indent:-46.8pt;}
@list l1:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-54.0pt;}
@list l1:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:187.2pt;
text-indent:-61.2pt;}
@list l1:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:216.0pt;
text-indent:-72.0pt;}
@list l2
{mso-list-id:82385747;
mso-list-type:hybrid;
mso-list-template-ids:-328275098 -118447058 201981977 201981979 201981967 201981977 201981979 201981967 201981977 201981979;}
@list l2:level1
{mso-level-number-format:alpha-upper;
mso-level-style-link:Anexo;
mso-level-text:"Anexo %1\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l2:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l2:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l3
{mso-list-id:136457555;
mso-list-template-ids:1646178562;}
@list l3:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l3:level2
{mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:39.6pt;
text-indent:-21.6pt;}
@list l3:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:61.2pt;
text-indent:-25.2pt;}
@list l3:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:86.4pt;
text-indent:-32.4pt;}
@list l3:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:111.6pt;
text-indent:-39.6pt;}
@list l3:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:136.8pt;
text-indent:-46.8pt;}
@list l3:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-54.0pt;}
@list l3:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:187.2pt;
text-indent:-61.2pt;}
@list l3:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:216.0pt;
text-indent:-72.0pt;}
@list l4
{mso-list-id:162010872;
mso-list-template-ids:201981983;}
@list l4:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l4:level2
{mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:39.6pt;
text-indent:-21.6pt;}
@list l4:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:61.2pt;
text-indent:-25.2pt;}
@list l4:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:86.4pt;
text-indent:-32.4pt;}
@list l4:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:111.6pt;
text-indent:-39.6pt;}
@list l4:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:136.8pt;
text-indent:-46.8pt;}
@list l4:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-54.0pt;}
@list l4:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:187.2pt;
text-indent:-61.2pt;}
@list l4:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:216.0pt;
text-indent:-72.0pt;}
@list l5
{mso-list-id:276258992;
mso-list-template-ids:961845138;}
@list l5:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:22.5pt;
text-indent:-22.5pt;}
@list l5:level2
{mso-level-start-at:2;
mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-36.0pt;}
@list l5:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-36.0pt;}
@list l5:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-54.0pt;}
@list l5:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:198.0pt;
text-indent:-54.0pt;}
@list l5:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:252.0pt;
text-indent:-72.0pt;}
@list l5:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:306.0pt;
text-indent:-90.0pt;}
@list l5:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:342.0pt;
text-indent:-90.0pt;}
@list l5:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:396.0pt;
text-indent:-108.0pt;}
@list l6
{mso-list-id:369719730;
mso-list-type:hybrid;
mso-list-template-ids:-2008413238 1701370174 201981955 201981957 201981953 201981955 201981957 201981953 201981955 201981957;}
@list l6:level1
{mso-level-start-at:4;
mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:TimesNewRomanPSMT;}
@list l6:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l6:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l6:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l6:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l6:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l6:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l7
{mso-list-id:542060299;
mso-list-type:hybrid;
mso-list-template-ids:-358344564 201981967 201981977 201981979 201981967 201981977 201981979 201981967 201981977 201981979;}
@list l7:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l7:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l7:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l7:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l7:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l7:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l7:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l7:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l7:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l8
{mso-list-id:559170737;
mso-list-type:hybrid;
mso-list-template-ids:-175715902 -805530464 201981977 201981979 201981967 201981977 201981979 201981967 201981977 201981979;}
@list l8:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l8:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l8:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l8:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l8:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l8:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l8:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l8:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l8:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l9
{mso-list-id:891304042;
mso-list-template-ids:1926248762;}
@list l9:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l9:level2
{mso-level-text:"%1\.%2";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:64.2pt;
text-indent:-28.8pt;}
@list l9:level3
{mso-level-text:"%1\.%2\.%3";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:71.4pt;
text-indent:-36.0pt;}
@list l9:level4
{mso-level-text:"%1\.%2\.%3\.%4";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:78.6pt;
text-indent:-43.2pt;}
@list l9:level5
{mso-level-style-link:"Heading 5";
mso-level-text:"%1\.%2\.%3\.%4\.%5";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:85.8pt;
text-indent:-50.4pt;}
@list l9:level6
{mso-level-style-link:"Heading 6";
mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:93.0pt;
text-indent:-57.6pt;}
@list l9:level7
{mso-level-style-link:"Heading 7";
mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:100.2pt;
text-indent:-64.8pt;}
@list l9:level8
{mso-level-style-link:"Heading 8";
mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:107.4pt;
text-indent:-72.0pt;}
@list l9:level9
{mso-level-style-link:"Heading 9";
mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:114.6pt;
text-indent:-79.2pt;}
@list l10
{mso-list-id:972949491;
mso-list-template-ids:977045424;}
@list l10:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:22.5pt;
text-indent:-22.5pt;}
@list l10:level2
{mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:64.35pt;
text-indent:-36.0pt;}
@list l10:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:92.7pt;
text-indent:-36.0pt;}
@list l10:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:139.05pt;
text-indent:-54.0pt;}
@list l10:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:167.4pt;
text-indent:-54.0pt;}
@list l10:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:213.75pt;
text-indent:-72.0pt;}
@list l10:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:260.1pt;
text-indent:-90.0pt;}
@list l10:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:288.45pt;
text-indent:-90.0pt;}
@list l10:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:334.8pt;
text-indent:-108.0pt;}
@list l11
{mso-list-id:1085763111;
mso-list-type:hybrid;
mso-list-template-ids:880841890 201981967 201981977 201981979 201981967 201981977 201981979 201981967 201981977 201981979;}
@list l11:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l11:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l11:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l11:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l11:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l11:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l11:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l11:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l11:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l12
{mso-list-id:1213037557;
mso-list-template-ids:201981983;}
@list l12:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:53.4pt;
text-indent:-18.0pt;}
@list l12:level2
{mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:75.0pt;
text-indent:-21.6pt;}
@list l12:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:96.6pt;
text-indent:-25.2pt;}
@list l12:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:121.8pt;
text-indent:-32.4pt;}
@list l12:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:147.0pt;
text-indent:-39.6pt;}
@list l12:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:172.2pt;
text-indent:-46.8pt;}
@list l12:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:197.4pt;
text-indent:-54.0pt;}
@list l12:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:222.6pt;
text-indent:-61.2pt;}
@list l12:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:251.4pt;
text-indent:-72.0pt;}
@list l13
{mso-list-id:1244947729;
mso-list-template-ids:201981983;}
@list l13:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:53.4pt;
text-indent:-18.0pt;}
@list l13:level2
{mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:75.0pt;
text-indent:-21.6pt;}
@list l13:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:96.6pt;
text-indent:-25.2pt;}
@list l13:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:121.8pt;
text-indent:-32.4pt;}
@list l13:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:147.0pt;
text-indent:-39.6pt;}
@list l13:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:172.2pt;
text-indent:-46.8pt;}
@list l13:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:197.4pt;
text-indent:-54.0pt;}
@list l13:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:222.6pt;
text-indent:-61.2pt;}
@list l13:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:251.4pt;
text-indent:-72.0pt;}
@list l14
{mso-list-id:1332025236;
mso-list-type:hybrid;
mso-list-template-ids:1890845550 1448217620 201981955 201981957 201981953 201981955 201981957 201981953 201981955 201981957;}
@list l14:level1
{mso-level-number-format:bullet;
mso-level-text:\F084;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:9.0pt;
font-family:"Wingdings 3";
color:#0098CD;}
@list l14:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l14:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l14:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l14:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l14:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l14:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l14:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l14:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l15
{mso-list-id:1415518150;
mso-list-type:hybrid;
mso-list-template-ids:1473178950 201981967 201981977 201981979 201981967 201981977 201981979 201981967 201981977 201981979;}
@list l15:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l15:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l15:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l15:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l15:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l15:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l15:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l15:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l15:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l16
{mso-list-id:1423918322;
mso-list-type:hybrid;
mso-list-template-ids:870194326 893313626 201981977 201981979 201981967 201981977 201981979 201981967 201981977 201981979;}
@list l16:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l16:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l16:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l16:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l16:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l16:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l16:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l16:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l16:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l17
{mso-list-id:1462453754;
mso-list-template-ids:-1283704032;
mso-list-style-priority:99;
mso-list-style-name:ViñetasUNIR;}
@list l17:level1
{mso-level-number-format:bullet;
mso-level-text:\F084;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:14.2pt;
text-indent:-14.2pt;
mso-ansi-font-size:9.0pt;
font-family:"Wingdings 3";
color:#0098CD;}
@list l17:level2
{mso-level-number-format:bullet;
mso-level-text:•;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:1.0cm;
text-indent:-14.15pt;
mso-ansi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-bidi-font-family:"Times New Roman";
color:#0098CD;}
@list l17:level3
{mso-level-number-format:bullet;
mso-level-text:\F0FA;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:42.55pt;
text-indent:-14.2pt;
mso-ansi-font-size:12.0pt;
font-family:Wingdings;
color:#0098CD;}
@list l17:level4
{mso-level-text:"\(%4\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:108.0pt;
text-indent:-18.0pt;}
@list l17:level5
{mso-level-number-format:alpha-lower;
mso-level-text:"\(%5\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:126.0pt;
text-indent:-18.0pt;}
@list l17:level6
{mso-level-number-format:roman-lower;
mso-level-text:"\(%6\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:144.0pt;
text-indent:-18.0pt;}
@list l17:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-18.0pt;}
@list l17:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:180.0pt;
text-indent:-18.0pt;}
@list l17:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:198.0pt;
text-indent:-18.0pt;}
@list l18
{mso-list-id:1516993573;
mso-list-type:hybrid;
mso-list-template-ids:-1025086560 201981953 201981955 201981957 201981953 201981955 201981957 201981953 201981955 201981957;}
@list l18:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l18:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l18:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l18:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l18:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l18:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l18:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l18:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l18:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l19
{mso-list-id:1686445378;
mso-list-type:hybrid;
mso-list-template-ids:1831490806 -537492352 201981977 201981979 201981967 201981977 201981979 201981967 201981977 201981979;}
@list l19:level1
{mso-level-style-link:"Index 1";
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l19:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l19:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l19:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l19:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l19:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l19:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l19:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l19:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l20
{mso-list-id:1765225137;
mso-list-template-ids:960247430;}
@list l20:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l20:level2
{mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:39.6pt;
text-indent:-21.6pt;}
@list l20:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:61.2pt;
text-indent:-25.2pt;}
@list l20:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:86.4pt;
text-indent:-32.4pt;}
@list l20:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:111.6pt;
text-indent:-39.6pt;}
@list l20:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:136.8pt;
text-indent:-46.8pt;}
@list l20:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-54.0pt;}
@list l20:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:187.2pt;
text-indent:-61.2pt;}
@list l20:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:216.0pt;
text-indent:-72.0pt;}
@list l21
{mso-list-id:1830754499;
mso-list-template-ids:-1283704032;
mso-list-style-id:1462453754;}
@list l21:level1
{mso-level-number-format:bullet;
mso-level-text:\F084;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:14.2pt;
text-indent:-14.2pt;
mso-ansi-font-size:9.0pt;
font-family:"Wingdings 3";
color:#0098CD;}
@list l21:level2
{mso-level-number-format:bullet;
mso-level-text:•;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:1.0cm;
text-indent:-14.15pt;
mso-ansi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-bidi-font-family:"Times New Roman";
color:#0098CD;}
@list l21:level3
{mso-level-number-format:bullet;
mso-level-text:\F0FA;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:42.55pt;
text-indent:-14.2pt;
mso-ansi-font-size:12.0pt;
font-family:Wingdings;
color:#0098CD;}
@list l21:level4
{mso-level-text:"\(%4\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:108.0pt;
text-indent:-18.0pt;}
@list l21:level5
{mso-level-number-format:alpha-lower;
mso-level-text:"\(%5\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:126.0pt;
text-indent:-18.0pt;}
@list l21:level6
{mso-level-number-format:roman-lower;
mso-level-text:"\(%6\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:144.0pt;
text-indent:-18.0pt;}
@list l21:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-18.0pt;}
@list l21:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:180.0pt;
text-indent:-18.0pt;}
@list l21:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:198.0pt;
text-indent:-18.0pt;}
@list l22
{mso-list-id:1855220232;
mso-list-template-ids:-1863424668;}
@list l22:level1
{mso-level-style-link:"Heading 1";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l22:level2
{mso-level-style-link:"Heading 2";
mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:50.0pt;
text-indent:-21.6pt;}
@list l22:level3
{mso-level-style-link:"Heading 3";
mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:159.9pt;
text-indent:-25.2pt;}
@list l22:level4
{mso-level-style-link:"Heading 4";
mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:86.4pt;
text-indent:-32.4pt;}
@list l22:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:111.6pt;
text-indent:-39.6pt;}
@list l22:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:136.8pt;
text-indent:-46.8pt;}
@list l22:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-54.0pt;}
@list l22:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:187.2pt;
text-indent:-61.2pt;}
@list l22:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:216.0pt;
text-indent:-72.0pt;}
@list l23
{mso-list-id:1856726338;
mso-list-type:hybrid;
mso-list-template-ids:-482679882 201981967 201981977 201981979 201981967 201981977 201981979 201981967 201981977 201981979;}
@list l23:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l23:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l23:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l23:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l24
{mso-list-id:1955475359;
mso-list-template-ids:201981983;}
@list l24:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l24:level2
{mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:39.6pt;
text-indent:-21.6pt;}
@list l24:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:61.2pt;
text-indent:-25.2pt;}
@list l24:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:86.4pt;
text-indent:-32.4pt;}
@list l24:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:111.6pt;
text-indent:-39.6pt;}
@list l24:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:136.8pt;
text-indent:-46.8pt;}
@list l24:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-54.0pt;}
@list l24:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:187.2pt;
text-indent:-61.2pt;}
@list l24:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:216.0pt;
text-indent:-72.0pt;}
@list l25
{mso-list-id:2098745596;
mso-list-type:hybrid;
mso-list-template-ids:428776536 201981953 201981955 201981957 201981953 201981955 201981957 201981953 201981955 201981957;}
@list l25:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l25:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l25:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l25:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l25:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l25:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l25:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l25:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l25:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l26
{mso-list-id:2102024374;
mso-list-template-ids:-526077812;}
@list l26:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
@list l26:level2
{mso-level-text:"%1\.%2\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:39.6pt;
text-indent:-21.6pt;}
@list l26:level3
{mso-level-text:"%1\.%2\.%3\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:61.2pt;
text-indent:-25.2pt;}
@list l26:level4
{mso-level-text:"%1\.%2\.%3\.%4\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:86.4pt;
text-indent:-32.4pt;}
@list l26:level5
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:111.6pt;
text-indent:-39.6pt;}
@list l26:level6
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:136.8pt;
text-indent:-46.8pt;}
@list l26:level7
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:162.0pt;
text-indent:-54.0pt;}
@list l26:level8
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:187.2pt;
text-indent:-61.2pt;}
@list l26:level9
{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:216.0pt;
text-indent:-72.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Calibri",sans-serif;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
table.MsoTableGrid
{mso-style-name:"Table Grid";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-priority:59;
mso-style-unhide:no;
border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext;
mso-para-margin:0cm;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Calibri",sans-serif;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
table.MsoTable15Grid4Accent1
{mso-style-name:"Grid Table 4 - Accent 1";
mso-tstyle-rowband-size:1;
mso-tstyle-colband-size:1;
mso-style-priority:49;
mso-style-unhide:no;
border:solid #9CC2E5 1.0pt;
mso-border-themecolor:accent1;
mso-border-themetint:153;
mso-border-alt:solid #9CC2E5 .5pt;
mso-border-themecolor:accent1;
mso-border-themetint:153;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-border-insideh:.5pt solid #9CC2E5;
mso-border-insideh-themecolor:accent1;
mso-border-insideh-themetint:153;
mso-border-insidev:.5pt solid #9CC2E5;
mso-border-insidev-themecolor:accent1;
mso-border-insidev-themetint:153;
mso-para-margin:0cm;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Calibri",sans-serif;
mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;
mso-fareast-language:ES;}
table.MsoTable15Grid4Accent1FirstRow
{mso-style-name:"Grid Table 4 - Accent 1";
mso-table-condition:first-row;
mso-style-priority:49;
mso-style-unhide:no;
mso-tstyle-shading:#5B9BD5;
mso-tstyle-shading-themecolor:accent1;
mso-tstyle-border-top:.5pt solid #5B9BD5;
mso-tstyle-border-top-themecolor:accent1;
mso-tstyle-border-left:.5pt solid #5B9BD5;
mso-tstyle-border-left-themecolor:accent1;
mso-tstyle-border-bottom:.5pt solid #5B9BD5;
mso-tstyle-border-bottom-themecolor:accent1;
mso-tstyle-border-right:.5pt solid #5B9BD5;
mso-tstyle-border-right-themecolor:accent1;
mso-tstyle-border-insideh:cell-none;
mso-tstyle-border-insidev:cell-none;
color:white;
mso-themecolor:background1;
mso-ansi-font-weight:bold;
mso-bidi-font-weight:bold;}
table.MsoTable15Grid4Accent1LastRow
{mso-style-name:"Grid Table 4 - Accent 1";
mso-table-condition:last-row;
mso-style-priority:49;
mso-style-unhide:no;
mso-tstyle-border-top:1.5pt double #5B9BD5;
mso-tstyle-border-top-themecolor:accent1;
mso-ansi-font-weight:bold;
mso-bidi-font-weight:bold;}
table.MsoTable15Grid4Accent1FirstCol
{mso-style-name:"Grid Table 4 - Accent 1";
mso-table-condition:first-column;
mso-style-priority:49;
mso-style-unhide:no;
mso-ansi-font-weight:bold;
mso-bidi-font-weight:bold;}
table.MsoTable15Grid4Accent1LastCol
{mso-style-name:"Grid Table 4 - Accent 1";
mso-table-condition:last-column;
mso-style-priority:49;
mso-style-unhide:no;
mso-ansi-font-weight:bold;
mso-bidi-font-weight:bold;}
table.MsoTable15Grid4Accent1OddColumn
{mso-style-name:"Grid Table 4 - Accent 1";
mso-table-condition:odd-column;
mso-style-priority:49;
mso-style-unhide:no;
mso-tstyle-shading:#DEEAF6;
mso-tstyle-shading-themecolor:accent1;
mso-tstyle-shading-themetint:51;}
table.MsoTable15Grid4Accent1OddRow
{mso-style-name:"Grid Table 4 - Accent 1";
mso-table-condition:odd-row;
mso-style-priority:49;
mso-style-unhide:no;
mso-tstyle-shading:#DEEAF6;
mso-tstyle-shading-themecolor:accent1;
mso-tstyle-shading-themetint:51;}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="2050"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="2"/>
</o:shapelayout></xml><![endif]-->
</head>
<body link="#0563C1" style="tab-interval:35.4pt;word-wrap:break-word" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p align="center" class="MsoNoSpacing" style="text-align:center;line-height:115%"><span lang="ES" style='font-size:24.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:"Open Sans";mso-fareast-language:
ES;mso-no-proof:yes'><!--[if gte vml 1]><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Imagen_x0020_5126" o:spid="_x0000_i1027" type="#_x0000_t75"
alt="Texto&#10;&#10;Descripción generada automáticamente" style='width:302.4pt;
height:68.4pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="plantilla_individual_files/image001.png" o:title="Texto&#10;&#10;Descripción generada automáticamente"/>
</v:shape><![endif]--><?if !vml?><img alt="Texto
Descripción generada automáticamente" height="91" src="plantilla_individual_files/image002.gif" v:shapes="Imagen_x0020_5126" width="403"/><?endif?></span><span lang="ES" style='font-size:24.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:"Open Sans"'><o:p></o:p></span></p>
<p align="center" class="MsoNoSpacing" style="text-align:center;line-height:115%"><span lang="ES" style='font-size:24.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:"Open Sans"'>Universidad
Internacional de La Rioja<o:p></o:p></span></p>
<p align="center" class="MsoNoSpacing" style="text-align:center;line-height:115%"><span lang="ES" style='font-size:20.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:"Open Sans"'>Escuela
Superior de Ingeniería y<o:p></o:p></span></p>
<p align="center" class="MsoNoSpacing" style="text-align:center;line-height:115%"><span lang="ES" style='font-size:20.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:"Open Sans"'>Tecnología<o:p></o:p></span></p>
<p align="center" class="MsoNoSpacing" style="text-align:center;line-height:115%"><span lang="ES" style="font-size:20.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Tahoma"><o:p> </o:p></span></p>
<p align="center" class="MsoNoSpacing" style="text-align:center;line-height:115%"><span lang="ES" style="font-size:20.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Tahoma"><o:p> </o:p></span></p>
<p align="center" class="MsoNoSpacing" style="text-align:center;line-height:115%"><span lang="ES" style="font-size:20.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Tahoma"><o:p> </o:p></span></p>
<p align="center" class="MsoNoSpacing" style="text-align:center;line-height:115%"><span lang="ES" style="font-size:20.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:Tahoma"><o:p> </o:p></span></p>
<p align="center" class="MsoNoSpacing" style="text-align:center;line-height:115%"><span lang="ES" style='font-size:18.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:Tahoma'>Máster Universitario
en Inteligencia artificial</span><span lang="ES" style="font-size:26.0pt;
mso-bidi-font-size:14.0pt;line-height:115%;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-hansi-font-family:Calibri;mso-hansi-theme-font:
minor-latin;mso-bidi-font-family:Tahoma;color:#0098CD"><o:p></o:p></span></p>
<p class="MsoNormal"><a name="_Hlk216726907"><span lang="ES" style="font-size:26.0pt;
mso-bidi-font-size:14.0pt;line-height:150%;mso-bidi-font-family:Tahoma;
color:#0098CD;mso-fareast-language:EN-US">Optimización de Hiperparámetros OCR
con Ray Tune para Documentos Académicos en </span></a><span class="GramE"><span style="mso-bookmark:_Hlk216726907"><span lang="ES" style="font-size:26.0pt;
mso-bidi-font-size:14.0pt;line-height:150%;mso-bidi-font-family:Tahoma;
color:#0098CD;mso-fareast-language:EN-US">Español</span></span></span><span style="mso-bookmark:_Hlk216726907"><span lang="ES" style="mso-fareast-language:
EN-US"><o:p></o:p></span></span></p>
<span style="mso-bookmark:_Hlk216726907"></span>
<p class="MsoNormal"><span lang="ES" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES" style="mso-fareast-language:EN-US"><span style="mso-tab-count:1">            </span><o:p></o:p></span></p>
<table align="left" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;border:none;mso-border-alt:solid #E7E6E6 .5pt;
mso-border-themecolor:background2;mso-yfti-tbllook:1184;mso-table-lspace:7.05pt;
margin-left:4.8pt;mso-table-rspace:7.05pt;margin-right:4.8pt;mso-table-anchor-vertical:
page;mso-table-anchor-horizontal:margin;mso-table-left:left;mso-table-top:
609.8pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-insideh:.5pt solid #E7E6E6;
mso-border-insideh-themecolor:background2;mso-border-insidev:.5pt solid #E7E6E6;
mso-border-insidev-themecolor:background2">
<tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes">
<td style="width:198.2pt;border:solid #E7E6E6 1.0pt;mso-border-themecolor:
background2;mso-border-alt:solid #E7E6E6 .5pt;mso-border-themecolor:background2;
padding:0cm 5.4pt 0cm 5.4pt" width="264">
<p class="MsoNoSpacing" style="line-height:115%;mso-element:frame;mso-element-frame-hspace:
7.05pt;mso-element-wrap:around;mso-element-anchor-vertical:page;mso-element-anchor-horizontal:
margin;mso-element-top:609.8pt;mso-height-rule:exactly"><span lang="ES" style='font-size:12.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:Tahoma'>Trabajo fin de
estudio presentado por:<o:p></o:p></span></p>
</td>
<td style="width:227.45pt;border:solid #E7E6E6 1.0pt;mso-border-themecolor:
background2;border-left:none;mso-border-left-alt:solid #E7E6E6 .5pt;
mso-border-left-themecolor:background2;mso-border-alt:solid #E7E6E6 .5pt;
mso-border-themecolor:background2;padding:0cm 5.4pt 0cm 5.4pt" width="303">
<p class="MsoNoSpacing" style="line-height:115%;mso-element:frame;mso-element-frame-hspace:
7.05pt;mso-element-wrap:around;mso-element-anchor-vertical:page;mso-element-anchor-horizontal:
margin;mso-element-top:609.8pt;mso-height-rule:exactly"><span lang="ES" style='font-size:12.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:Tahoma'>Sergio Jiménez <span class="SpellE">Jiménez</span><o:p></o:p></span></p>
</td>
</tr>
<tr style="mso-yfti-irow:1">
<td style="width:198.2pt;border:solid #E7E6E6 1.0pt;mso-border-themecolor:
background2;border-top:none;mso-border-top-alt:solid #E7E6E6 .5pt;mso-border-top-themecolor:
background2;mso-border-alt:solid #E7E6E6 .5pt;mso-border-themecolor:background2;
padding:0cm 5.4pt 0cm 5.4pt" width="264">
<p class="MsoNoSpacing" style="line-height:115%;mso-element:frame;mso-element-frame-hspace:
7.05pt;mso-element-wrap:around;mso-element-anchor-vertical:page;mso-element-anchor-horizontal:
margin;mso-element-top:609.8pt;mso-height-rule:exactly"><span lang="ES" style='font-size:12.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:Tahoma'>Tipo de
trabajo:<o:p></o:p></span></p>
</td>
<td style="width:227.45pt;border-top:none;border-left:none;
border-bottom:solid #E7E6E6 1.0pt;mso-border-bottom-themecolor:background2;
border-right:solid #E7E6E6 1.0pt;mso-border-right-themecolor:background2;
mso-border-top-alt:solid #E7E6E6 .5pt;mso-border-top-themecolor:background2;
mso-border-left-alt:solid #E7E6E6 .5pt;mso-border-left-themecolor:background2;
mso-border-alt:solid #E7E6E6 .5pt;mso-border-themecolor:background2;
padding:0cm 5.4pt 0cm 5.4pt" width="303">
<p class="MsoNoSpacing" style="line-height:115%;mso-element:frame;mso-element-frame-hspace:
7.05pt;mso-element-wrap:around;mso-element-anchor-vertical:page;mso-element-anchor-horizontal:
margin;mso-element-top:609.8pt;mso-height-rule:exactly"><span lang="ES" style='font-size:12.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:Tahoma'>Desarrollo
Software<o:p></o:p></span></p>
</td>
</tr>
<tr style="mso-yfti-irow:2">
<td style="width:198.2pt;border:solid #E7E6E6 1.0pt;mso-border-themecolor:
background2;border-top:none;mso-border-top-alt:solid #E7E6E6 .5pt;mso-border-top-themecolor:
background2;mso-border-alt:solid #E7E6E6 .5pt;mso-border-themecolor:background2;
padding:0cm 5.4pt 0cm 5.4pt" width="264">
<p class="MsoNoSpacing" style="line-height:115%;mso-element:frame;mso-element-frame-hspace:
7.05pt;mso-element-wrap:around;mso-element-anchor-vertical:page;mso-element-anchor-horizontal:
margin;mso-element-top:609.8pt;mso-height-rule:exactly"><span lang="ES" style='font-size:12.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:Tahoma'>Director/a:<o:p></o:p></span></p>
</td>
<td style="width:227.45pt;border-top:none;border-left:none;
border-bottom:solid #E7E6E6 1.0pt;mso-border-bottom-themecolor:background2;
border-right:solid #E7E6E6 1.0pt;mso-border-right-themecolor:background2;
mso-border-top-alt:solid #E7E6E6 .5pt;mso-border-top-themecolor:background2;
mso-border-left-alt:solid #E7E6E6 .5pt;mso-border-left-themecolor:background2;
mso-border-alt:solid #E7E6E6 .5pt;mso-border-themecolor:background2;
padding:0cm 5.4pt 0cm 5.4pt" width="303">
<p class="MsoNoSpacing" style="line-height:115%;mso-element:frame;mso-element-frame-hspace:
7.05pt;mso-element-wrap:around;mso-element-anchor-vertical:page;mso-element-anchor-horizontal:
margin;mso-element-top:609.8pt;mso-height-rule:exactly"><span lang="ES" style='font-size:12.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:Tahoma'>Javier Rodrigo
Villazón Terrazas<o:p></o:p></span></p>
</td>
</tr>
<tr style="mso-yfti-irow:3;mso-yfti-lastrow:yes">
<td style="width:198.2pt;border:solid #E7E6E6 1.0pt;mso-border-themecolor:
background2;border-top:none;mso-border-top-alt:solid #E7E6E6 .5pt;mso-border-top-themecolor:
background2;mso-border-alt:solid #E7E6E6 .5pt;mso-border-themecolor:background2;
padding:0cm 5.4pt 0cm 5.4pt" width="264">
<p class="MsoNoSpacing" style="line-height:115%;mso-element:frame;mso-element-frame-hspace:
7.05pt;mso-element-wrap:around;mso-element-anchor-vertical:page;mso-element-anchor-horizontal:
margin;mso-element-top:609.8pt;mso-height-rule:exactly"><span lang="ES" style='font-size:12.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:Tahoma'>Fecha:<o:p></o:p></span></p>
</td>
<td style="width:227.45pt;border-top:none;border-left:none;
border-bottom:solid #E7E6E6 1.0pt;mso-border-bottom-themecolor:background2;
border-right:solid #E7E6E6 1.0pt;mso-border-right-themecolor:background2;
mso-border-top-alt:solid #E7E6E6 .5pt;mso-border-top-themecolor:background2;
mso-border-left-alt:solid #E7E6E6 .5pt;mso-border-left-themecolor:background2;
mso-border-alt:solid #E7E6E6 .5pt;mso-border-themecolor:background2;
padding:0cm 5.4pt 0cm 5.4pt" width="303">
<p class="MsoNoSpacing" style="line-height:115%;mso-element:frame;mso-element-frame-hspace:
7.05pt;mso-element-wrap:around;mso-element-anchor-vertical:page;mso-element-anchor-horizontal:
margin;mso-element-top:609.8pt;mso-height-rule:exactly"><span lang="ES" style='font-size:12.0pt;mso-bidi-font-size:14.0pt;line-height:115%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:Tahoma'>06.10.2025<o:p></o:p></span></p>
</td>
</tr>
</table>
<p class="MsoNormal"><span lang="ES" style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<span lang="ES" style='font-size:18.0pt;mso-bidi-font-size:11.0pt;line-height:
150%;font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Times New Roman";mso-hansi-theme-font:major-latin;
mso-bidi-font-family:Arial;color:#0098CD;mso-ansi-language:ES;mso-fareast-language:
EN-US;mso-bidi-language:AR-SA'><br clear="all" style="page-break-before:always"/>
</span>
<p class="Ttulondices"><span lang="ES">Resumen </span></p><p class="MsoNormal"><span lang="ES">El presente Trabajo Fin de Máster aborda la optimización de sistemas de Reconocimiento Óptico de Caracteres (OCR) basados en inteligencia artificial para documentos en español. El objetivo principal es identificar la configuración óptima de hiperparámetros que maximice la precisión del reconocimiento de texto sin requerir fine-tuning de los modelos base.
Se realizó un estudio comparativo de tres soluciones OCR de código abierto: EasyOCR, PaddleOCR (PP-OCRv5) y DocTR. Se evaluó su rendimiento mediante las métricas estándar CER (Character Error Rate) y WER (Word Error Rate) sobre un corpus de 45 páginas de documentos académicos en español. Tras identificar PaddleOCR como la solución más prometedora, se procedió a una optimización sistemática de hiperparámetros utilizando Ray Tune con el algoritmo de búsqueda Optuna, ejecutando 64 configuraciones diferentes con aceleración GPU (NVIDIA RTX 3060).
Los resultados demuestran que la optimización de hiperparámetros logró mejoras significativas: el mejor trial individual alcanzó un CER de 0.79% (precisión del 99.21%), cumpliendo el objetivo de CER &lt; 2%. Al validar la configuración optimizada sobre el dataset completo de 45 páginas, se obtuvo una mejora del 12.8% en CER (de 8.85% a 7.72%). El hallazgo más relevante fue que el parámetro `textline_orientation` (clasificación de orientación de línea de texto) tiene un impacto crítico en el rendimiento. Adicionalmente, se identificó que el umbral de detección (`text_det_thresh`) presenta una correlación positiva moderada (0.43) con el error, lo que indica que valores más bajos tienden a mejorar el rendimiento.
Fuente: [`docs/metrics/metrics_paddle.md`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md), [`src/results/correlations/paddle_correlations.csv`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/correlations/paddle_correlations.csv).
Este trabajo demuestra que la optimización de hiperparámetros es una alternativa viable al fine-tuning, especialmente útil cuando se dispone de modelos preentrenados para el idioma objetivo. La infraestructura dockerizada desarrollada permite reproducir los experimentos y facilita la evaluación sistemática de configuraciones OCR.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="ES">Palabras clave:</span></b><span lang="ES"> OCR, Reconocimiento Óptico de Caracteres, PaddleOCR, Optimización de Hiperparámetros, Ray Tune, Procesamiento de Documentos, Inteligencia Artificial</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="Ttulondices"><span style="mso-bookmark:_Toc437509152"><span class="SpellE"><span lang="ES">Abstract</span></span></span></p><p class="MsoNormal"><span lang="EN-US">This Master's Thesis addresses the optimization of Artificial Intelligence-based Optical Character Recognition (OCR) systems for Spanish documents. The main objective is to identify the optimal hyperparameter configuration that maximizes text recognition accuracy without requiring fine-tuning of the base models.
A comparative study of three open-source OCR solutions was conducted with EasyOCR, PaddleOCR (PP-OCRv5), and DocTR. Their performance was evaluated using standard CER (Character Error Rate) and WER (Word Error Rate) metrics on a corpus of 45 pages of academic documents in Spanish. After identifying PaddleOCR as the most promising solution, systematic hyperparameter optimization was performed using Ray Tune with the Optuna search algorithm, executing 64 different configurations with GPU acceleration (NVIDIA RTX 3060).
Results demonstrate that hyperparameter optimization achieved significant improvements. The best individual trial reached a CER of 0.79% (99.21% accuracy), meeting the CER &lt; 2% objective. When validating the optimized configuration on the full 45-page dataset, a 12.8% CER improvement was obtained (from 8.85% to 7.72%). The most relevant finding was that the `textline_orientation` parameter (text line orientation classification) has a critical impact on performance. Additionally, the detection threshold (`text_det_thresh`) showed a moderate positive correlation (0.43) with error, indicating that lower values tend to improve performance.
Sources: [`docs/metrics/metrics_paddle.md`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md), [`src/results/correlations/paddle_correlations.csv`](https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/correlations/paddle_correlations.csv).
This work demonstrates that hyperparameter optimization is a viable alternative to fine-tuning, especially useful when pre-trained models for the target language are available. The dockerized infrastructure developed enables experiment reproducibility and facilitates systematic evaluation of OCR configurations.</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US">Keywords:</span></b><span lang="EN-US"> OCR, Optical Character Recognition, PaddleOCR, Hyperparameter Optimization, Ray Tune, Document Processing, Artificial Intelligence</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<span lang="ES" style='font-size:12.0pt;line-height:150%;font-family:"Calibri",sans-serif;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:"Times New Roman";
mso-hansi-theme-font:minor-latin;mso-bidi-font-family:"Times New Roman";
mso-ansi-language:ES;mso-fareast-language:ES;mso-bidi-language:AR-SA'><br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
</span>
<p class="MsoNormal"><span style="mso-bookmark:_Toc437509152"><span lang="ES"><o:p> </o:p></span></span></p>
<span style="mso-bookmark:_Toc437509152"></span>
<p class="Ttulondices"><span lang="ES">Índice de contenidos</span></p>
<p class="MsoToc1" style="tab-stops:22.0pt right dotted 453.05pt"><!--[if supportFields]><span
lang=ES style='font-size:11.0pt;mso-bidi-font-size:12.0pt;line-height:150%'><span
style='mso-element:field-begin'></span><span
style='mso-spacerun:yes'> </span>TOC \o &quot;1-3&quot; \h \z \u <span
style='mso-element:field-separator'></span></span><![endif]--><span lang="ES"><a href="#_Toc160619805"><span style="mso-no-proof:yes">1.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">    </span></span><span style="mso-no-proof:yes">Introducción</span><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619805 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">1<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800300035000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc2" style="tab-stops:48.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619806"><span style="mso-no-proof:yes">1.1.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">      </span></span><span style="mso-no-proof:yes">Motivación</span><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619806 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">1<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800300036000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc2" style="tab-stops:48.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619807"><span style="mso-no-proof:yes">1.2.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">      </span></span><span style="mso-no-proof:yes">Planteamiento
del trabajo</span><span style="color:windowtext;display:none;mso-hide:screen;
mso-no-proof:yes;text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619807 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">3<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800300037000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc2" style="tab-stops:48.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619808"><span style="mso-no-proof:yes">1.3.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">      </span></span><span style="mso-no-proof:yes">Estructura
del trabajo</span><span style="color:windowtext;display:none;mso-hide:screen;
mso-no-proof:yes;text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619808 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">3<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800300038000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc1" style="tab-stops:22.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619809"><span style="mso-no-proof:yes">2.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">    </span></span><span style="mso-no-proof:yes">Contexto
y estado del arte</span><span style="color:windowtext;display:none;mso-hide:
screen;mso-no-proof:yes;text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619809 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">4<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800300039000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc2" style="tab-stops:48.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619810"><span style="mso-no-proof:yes">2.1.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">      </span></span><span style="mso-no-proof:yes">Contexto
del problema</span><span style="color:windowtext;display:none;mso-hide:screen;
mso-no-proof:yes;text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619810 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">4<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800310030000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc2" style="tab-stops:48.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619811"><span style="mso-no-proof:yes">2.2.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">      </span></span><span style="mso-no-proof:yes">Estado
del arte</span><span style="color:windowtext;display:none;mso-hide:screen;
mso-no-proof:yes;text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619811 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">4<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800310031000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc2" style="tab-stops:48.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619812"><span style="mso-no-proof:yes">2.3.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">      </span></span><span style="mso-no-proof:yes">Conclusiones</span><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619812 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">5<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800310032000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc1" style="tab-stops:22.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619813"><span style="mso-no-proof:yes">3.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">    </span></span><span style="mso-no-proof:yes">Objetivos
concretos y metodología de trabajo</span><span style="color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619813 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">6<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800310033000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc2" style="tab-stops:48.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619814"><span style="mso-no-proof:yes">3.1.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">      </span></span><span style="mso-no-proof:yes">Objetivo
general</span><span style="color:windowtext;display:none;mso-hide:screen;
mso-no-proof:yes;text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted"> </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619814 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">6<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800310034000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc2" style="tab-stops:48.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619815"><span style="mso-no-proof:yes">3.2.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">      </span></span><span style="mso-no-proof:yes">Objetivos
específicos</span><span style="color:windowtext;display:none;mso-hide:screen;
mso-no-proof:yes;text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619815 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">7<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800310035000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc2" style="tab-stops:48.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619816"><span style="mso-no-proof:yes">3.3.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">      </span></span><span style="mso-no-proof:yes">Metodología
del trabajo</span><span style="color:windowtext;display:none;mso-hide:screen;
mso-no-proof:yes;text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619816 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">8<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800310036000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc1" style="tab-stops:22.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619817"><span style='font-family:"Calibri Light",sans-serif;
mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-font-family:
"Times New Roman";mso-font-kerning:16.0pt;mso-bidi-font-weight:bold;mso-no-proof:
yes'>4.</span><span style='mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;color:windowtext;mso-font-kerning:1.0pt;
mso-ligatures:standardcontextual;mso-no-proof:yes;text-decoration:none;
text-underline:none'><span style="mso-tab-count:1">    </span></span><span style='font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:"Times New Roman";
text-transform:uppercase;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold;
mso-no-proof:yes'>D</span><span style='font-family:"Calibri Light",sans-serif;
mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-font-family:
"Times New Roman";mso-font-kerning:16.0pt;mso-bidi-font-weight:bold;mso-no-proof:
yes'>esarrollo específico de la contribución</span><span style="color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619817 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">9<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800310037000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc1" style="tab-stops:22.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619818"><span style="mso-no-proof:yes">5.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">    </span></span><span style="mso-no-proof:yes">Conclusiones
y trabajo futuro</span><span style="color:windowtext;display:none;mso-hide:
screen;mso-no-proof:yes;text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619818 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">13<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800310038000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc2" style="tab-stops:48.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619819"><span style="mso-no-proof:yes">5.1.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">      </span></span><span style="mso-no-proof:yes">Conclusiones</span><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619819 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">13<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800310039000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc2" style="tab-stops:48.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619820"><span style="mso-no-proof:yes">5.2.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">      </span></span><span style="mso-no-proof:yes">Líneas
de trabajo futuro</span><span style="color:windowtext;display:none;mso-hide:
screen;mso-no-proof:yes;text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619820 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">13<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800320030000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc1" style="tab-stops:right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619821"><span style="mso-no-proof:yes">Referencias bibliográficas</span><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted">. </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619821 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">14<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800320031000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="MsoToc1" style="tab-stops:60.0pt right dotted 453.05pt"><span lang="ES"><a href="#_Toc160619822"><span style="mso-no-proof:yes">Anexo A.</span><span style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:minor-fareast;
mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
color:windowtext;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes;text-decoration:none;text-underline:none'><span style="mso-tab-count:1">     </span></span><span style="mso-no-proof:yes">Código
fuente y datos analizados</span><span style="color:windowtext;display:none;
mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:none"><span style="mso-tab-count:1 dotted"> </span></span><!--[if supportFields]><span
style='color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none'><span style='mso-element:field-begin'></span>
PAGEREF _Toc160619822 \h <span style='mso-element:field-separator'></span></span><![endif]--><span style="color:windowtext;display:none;mso-hide:screen;mso-no-proof:yes;
text-decoration:none;text-underline:none">15<!--[if gte mso 9]><xml>
<w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100360030003600310039003800320032000000</w:data>
</xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
display:none;mso-hide:screen;mso-no-proof:yes;text-decoration:none;text-underline:
none'><span style='mso-element:field-end'></span></span><![endif]--></a></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="Ttulondices"><!--[if supportFields]><span lang=ES style='font-size:
11.0pt;mso-bidi-font-size:12.0pt;line-height:150%;font-family:"Calibri",sans-serif;
mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-font-family:
"Times New Roman";mso-fareast-language:ES'><span style='mso-element:field-end'></span></span><![endif]--><span lang="ES"><br clear="all" style="page-break-before:always"/>
Índice de figuras </span></p>
<p class="MsoTof" style="tab-stops:right dotted 453.05pt"><!--[if supportFields]><span
lang=ES style='mso-bidi-font-family:Arial;background:yellow;mso-highlight:yellow'><span
style='mso-element:field-begin'></span><span
style='mso-spacerun:yes'> </span>TOC \f c \h \z \t &quot;Título
9;1;Figuras;1&quot; \c &quot;Figura&quot; <span style='mso-element:field-separator'></span></span><![endif]--><span lang="ES"></span><span lang="ES" style='mso-fareast-font-family:"Times New Roman";mso-fareast-theme-font:
minor-fareast;mso-bidi-font-family:"Times New Roman";mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;mso-no-proof:yes'><o:p></o:p></span></p>
<p class="Ttulondices"><!--[if supportFields]><span lang=ES style='background:
yellow;mso-highlight:yellow'><span style='mso-element:field-end'></span></span><![endif]--><span lang="ES"><br clear="all" style="page-break-before:always"/>
Índice de tablas</span></p>
<p class="MsoTof" style="tab-stops:right dotted 453.05pt"><!--[if supportFields]><b
style='mso-bidi-font-weight:normal'><span lang=ES><span style='mso-element:
field-begin'></span><span style='mso-spacerun:yes'> </span>TOC \h \z \t
&quot;Tablas;1&quot; \c &quot;Tabla&quot; <span style='mso-element:field-separator'></span></span></b><![endif]--><span lang="ES"></span><span lang="ES" style='font-size:11.0pt;line-height:150%;mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;mso-font-kerning:1.0pt;mso-ligatures:standardcontextual;
mso-no-proof:yes'><o:p></o:p></span></p>
<p class="Ttulondices"><!--[if supportFields]><b style='mso-bidi-font-weight:
normal'><span lang=ES style='mso-bidi-font-family:"Times New Roman"'><span
style='mso-element:field-end'></span></span></b><![endif]--><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:
"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
<p class="Ttulondices"><b style="mso-bidi-font-weight:normal"><span lang="ES" style='mso-bidi-font-family:"Times New Roman"'><o:p> </o:p></span></b></p>
</div>
<span lang="ES" style='font-size:18.0pt;line-height:150%;font-family:"Calibri Light",sans-serif;
mso-ascii-theme-font:major-latin;mso-fareast-font-family:"Times New Roman";
mso-hansi-theme-font:major-latin;mso-bidi-font-family:Arial;color:#0098CD;
mso-ansi-language:ES;mso-fareast-language:EN-US;mso-bidi-language:AR-SA'><br clear="all" style="page-break-before:always;mso-break-type:section-break"/>
</span>
<div class="WordSection2">
<h1 style="mso-list:l22 level1 lfo18"><a name="_Toc437515557"></a><a name="_Toc14106979"></a><a name="_Toc147741191"></a><a name="_Toc160619805"><span style="mso-bookmark:_Toc147741191"><span style="mso-bookmark:_Toc14106979"><span style="mso-bookmark:_Toc437515557"><?if !supportLists?><span lang="ES" style='mso-fareast-font-family:"Calibri Light";mso-fareast-theme-font:major-latin;
mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin'><span style="mso-list:Ignore">1.<span style='font:7.0pt "Times New Roman"'>  
</span></span></span><?endif?><span lang="ES" style="text-transform:none">Introducción</span></span></span></span></a><span style="mso-bookmark:_Toc14106979"><span style="mso-bookmark:_Toc437515557"><span lang="ES" style="text-transform:none"> </span></span></span></h1><p class="MsoNormal"><span lang="ES">¿Es posible mejorar significativamente un sistema OCR sin reentrenarlo? Esta pregunta, aparentemente simple, encierra un desafío práctico que afecta a investigadores, instituciones educativas y empresas que necesitan digitalizar documentos pero carecen de los recursos para realizar fine-tuning de modelos neuronales. A lo largo de este capítulo se desarrolla la motivación del trabajo, se identifica el problema a resolver y se plantean las preguntas de investigación que guiarán el desarrollo experimental.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Motivación</span></h2>
<p class="MsoNormal"><span lang="ES">El Reconocimiento Óptico de Caracteres (OCR) es una tecnología fundamental en la era de la digitalización documental. Su capacidad para convertir imágenes de texto en datos editables y procesables ha transformado sectores como la administración pública, el ámbito legal, la banca y la educación. La expansión de la transformación digital empresarial ha impulsado su adopción, aunque la implementación práctica de sistemas OCR de alta precisión sigue presentando desafíos considerables.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">El contexto de la digitalización documental</span></h3>
<p class="MsoNormal"><span lang="ES">La digitalización de documentos ha pasado de ser una opción a una necesidad estratégica para organizaciones de todos los tamaños. Los beneficios son múltiples: reducción del espacio físico de almacenamiento, facilidad de búsqueda y recuperación, preservación del patrimonio documental, y habilitación de flujos de trabajo automatizados. Sin embargo, la mera conversión de papel a imagen digital no aprovecha plenamente estas ventajas; es necesario extraer el texto contenido en los documentos para permitir su indexación, análisis y procesamiento automatizado.</span></p>
<p class="MsoNormal"><span lang="ES">El OCR actúa como puente entre el mundo físico del documento impreso y el mundo digital del texto procesable. Su precisión determina directamente la calidad de los procesos downstream. Un error de reconocimiento en un nombre propio puede invalidar una búsqueda; un dígito mal reconocido en una factura puede causar discrepancias contables. Una palabra mal interpretada en un contrato puede alterar su significado legal.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Desafíos específicos del español</span></h3>
<p class="MsoNormal"><span lang="ES">El procesamiento de documentos en español presenta particularidades que complican el reconocimiento automático de texto. Los caracteres especiales propios del idioma (la letra ñ, las vocales acentuadas á, é, í, ó, ú, la diéresis ü, y los signos de puntuación invertidos ¿, ¡) no están presentes en muchos conjuntos de entrenamiento internacionales, lo que puede degradar el rendimiento de modelos preentrenados predominantemente en inglés.</span></p>
<p class="MsoNormal"><span lang="ES">La Tabla 1 resume los principales desafíos lingüísticos del OCR en español:</span></p>
<a name="_Ref_Tab1"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->1<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Desafíos lingüísticos específicos del OCR en español.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Desafío</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Descripción</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Impacto en OCR</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Caracteres especiales</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">ñ, á, é, í, ó, ú, ü, ¿, ¡</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Confusión con caracteres similares (n/ñ, a/á)</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Palabras largas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Español permite compuestos largos</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Mayor probabilidad de error por carácter</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Abreviaturas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Dr., Sra., Ud., etc.</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Puntos internos confunden segmentación</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Nombres propios</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Tildes en apellidos (García, Martínez)</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Bases de datos sin soporte Unicode</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Además de los aspectos lingüísticos, los documentos académicos y administrativos en español presentan características tipográficas que complican el reconocimiento: variaciones en fuentes entre encabezados, cuerpo y notas al pie; presencia de índices, listas numeradas y cambios frecuentes de estilo; y saltos de línea que rompen la continuidad del texto. Estos elementos generan ruido que puede propagarse en aplicaciones downstream como la extracción de entidades nombradas o el análisis semántico.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">La brecha entre investigación y práctica</span></h3>
<p class="MsoNormal"><span lang="ES">Los modelos OCR basados en redes neuronales profundas, como los empleados en PaddleOCR, EasyOCR o DocTR, ofrecen un rendimiento competitivo en benchmarks estándar. No obstante, estos resultados en condiciones controladas no siempre se trasladan a documentos del mundo real.</span></p>
<p class="MsoNormal"><span lang="ES">La adaptación de modelos preentrenados a dominios específicos típicamente requiere fine-tuning con datos etiquetados del dominio objetivo y recursos computacionales significativos. Esta barrera técnica y económica excluye a muchos investigadores y organizaciones de beneficiarse plenamente de estas tecnologías.</span></p>
<p class="MsoNormal"><span lang="ES">La Tabla 2 ilustra los requisitos típicos para diferentes estrategias de mejora de OCR:</span></p>
<a name="_Ref_Tab2"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->2<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Comparación de estrategias de mejora de modelos OCR.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Estrategia</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Datos requeridos</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Hardware</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tiempo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Expertise</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Fine-tuning completo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Miles de imágenes etiquetadas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">GPU de alta memoria</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Días o semanas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Alto</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Fine-tuning parcial</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Cientos o miles de imágenes etiquetadas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">GPU dedicada</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Horas o días</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio-Alto</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Transfer learning</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Centenas de imágenes etiquetadas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">GPU dedicada</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Horas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Optimización de hiperparámetros</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Subconjunto de validación</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>CPU o GPU (CUDA 12.2+ en Docker DocTR)</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Horas</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Bajo-Medio</b></span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/07_anexo_a.md"><span style="font-family:Consolas;font-size:10pt">docs/07_anexo_a.md</span></a>, sección A.9.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">La oportunidad: optimización sin fine-tuning</span></h3>
<p class="MsoNormal"><span lang="ES">La presente investigación surge de una necesidad práctica: optimizar un sistema OCR para documentos académicos en español sin disponer de infraestructura de entrenamiento dedicada para fine-tuning. Esta restricción, lejos de ser una limitación excepcional, representa la realidad de muchos entornos académicos y empresariales donde el acceso a cómputo avanzado es limitado.</span></p>
<p class="MsoNormal"><span lang="ES">La hipótesis central de este trabajo es que los modelos OCR preentrenados contienen capacidades latentes que pueden activarse mediante la configuración adecuada de sus hiperparámetros de inferencia. Parámetros como los umbrales de detección de texto, las opciones de preprocesamiento de imagen, y los filtros de confianza de reconocimiento pueden tener un impacto significativo en el rendimiento final. Su optimización sistemática puede aproximarse a los beneficios del fine-tuning sin sus costes asociados.</span></p>
<p class="MsoNormal"><span lang="ES">Esta oportunidad se ve reforzada por la disponibilidad de frameworks modernos de optimización de hiperparámetros como Ray Tune (Liaw et al., 2018) y algoritmos de búsqueda eficientes como Optuna (Akiba et al., 2019), que permiten explorar espacios de configuración de manera sistemática y eficiente.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Planteamiento del trabajo</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Formulación del problema</span></h3>
<p class="MsoNormal"><span lang="ES">Las observaciones anteriores conducen a formular el problema central de este trabajo:</span></p>
<p class="MsoQuote"><i><span lang="ES">¿Es posible mejorar significativamente el rendimiento de modelos OCR preentrenados para documentos en español mediante la optimización sistemática de hiperparámetros, sin requerir fine-tuning y con recursos computacionales de consumo?</span></i></p>
<p class="MsoNormal"><span lang="ES">Este planteamiento parte de una observación fundamental: los sistemas OCR modernos exponen múltiples parámetros configurables que afectan su comportamiento durante la inferencia. Estos parámetros incluyen umbrales de detección, opciones de preprocesamiento, y filtros de calidad. En la práctica habitual, estos parámetros se dejan en sus valores por defecto, asumiendo que fueron optimizados por los desarrolladores del modelo. Sin embargo, los valores por defecto representan compromisos generales que pueden no ser óptimos para dominios específicos.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Preguntas de investigación</span></h3>
<p class="MsoNormal"><span lang="ES">Este planteamiento se descompone en las siguientes cuestiones específicas:</span></p>
<p class="MsoNormal"><span lang="ES"><b>PI1. Selección de modelo base</b>: ¿Cuál de las soluciones OCR de código abierto disponibles (EasyOCR, PaddleOCR, DocTR) ofrece el mejor rendimiento base para documentos en español?</span></p>
<p class="MsoNormal"><span lang="ES">Esta pregunta es fundamental porque la elección del modelo base determinará el punto de partida para la optimización. Un modelo con mejor rendimiento inicial puede ofrecer mayor margen de mejora o, alternativamente, estar ya cerca de su límite de optimización.</span></p>
<p class="MsoNormal"><span lang="ES"><b>PI2. Impacto de hiperparámetros</b>: ¿Qué hiperparámetros del pipeline OCR tienen mayor influencia en las métricas de error (CER, WER)?</span></p>
<p class="MsoNormal"><span lang="ES">Identificar los parámetros más influyentes permite focalizar el esfuerzo de optimización y proporciona insights sobre el funcionamiento interno del sistema. Parámetros con alta correlación con las métricas de error son candidatos prioritarios para ajuste.</span></p>
<p class="MsoNormal"><span lang="ES"><b>PI3. Optimización automatizada</b>: ¿Puede un proceso de búsqueda automatizada de hiperparámetros (mediante Ray Tune/Optuna) encontrar configuraciones que superen significativamente los valores por defecto?</span></p>
<p class="MsoNormal"><span lang="ES">Esta pregunta evalúa la viabilidad práctica de la metodología propuesta. "Significativamente" se define como una mejora sustancial respecto al baseline, con impacto observable en la calidad del texto reconocido.</span></p>
<p class="MsoNormal"><span lang="ES"><b>PI4. Viabilidad práctica</b>: ¿Son los tiempos de inferencia y los recursos requeridos compatibles con un despliegue en entornos con recursos limitados?</span></p>
<p class="MsoNormal"><span lang="ES">Una solución técnicamente superior pero impracticable tiene valor limitado. Esta pregunta ancla la investigación en consideraciones del mundo real.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Alcance y delimitación</span></h3>
<p class="MsoNormal"><span lang="ES">Este trabajo se centra específicamente en:</span></p>
<a name="_Ref_Tab3"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->3<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Delimitación del alcance del trabajo.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Aspecto</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Dentro del alcance</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Fuera del alcance</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Tipo de documento</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Documentos académicos digitales (PDF)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Documentos escaneados, manuscritos</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Idioma</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Español</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Otros idiomas</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Modelos</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR, PaddleOCR, DocTR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Soluciones comerciales (Google Cloud Vision, AWS Textract)</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Método de mejora</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización de hiperparámetros</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Fine-tuning, aumento de datos</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Hardware</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">GPU de consumo y CPU para referencia de tiempos</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Infraestructura multi-GPU</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Relevancia y beneficiarios</span></h3>
<p class="MsoNormal"><span lang="ES">La relevancia de este problema radica en su aplicabilidad inmediata. Una metodología reproducible para optimizar OCR sin fine-tuning beneficiaría a múltiples grupos:</span></p>
<p class="MsoNormal"><span lang="ES"><b>Investigadores académicos</b>: Quienes procesan grandes volúmenes de documentos para análisis de contenido, revisiones sistemáticas de literatura, o estudios bibliométricos. Un OCR más preciso reduce el tiempo de corrección manual y mejora la calidad de los análisis downstream.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Instituciones educativas</b>: Universidades y centros de investigación que digitalizan archivos históricos, actas administrativas, o materiales docentes. La preservación del patrimonio documental requiere transcripciones precisas.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Pequeñas y medianas empresas</b>: Organizaciones que automatizan flujos documentales (facturas, contratos, correspondencia) sin presupuesto para soluciones enterprise o infraestructura GPU.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Desarrolladores de software</b>: Quienes integran OCR en aplicaciones con restricciones de recursos, como dispositivos móviles o servidores compartidos, y necesitan maximizar el rendimiento sin costes adicionales de hardware.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Estructura del trabajo</span></h2>
<p class="MsoNormal"><span lang="ES">El documento sigue una estructura que refleja el proceso investigador. Tras esta introducción, el <b>Capítulo 2</b> sitúa el trabajo en su contexto técnico y revisa las tecnologías OCR basadas en aprendizaje profundo. Se describen las arquitecturas de detección, los modelos de reconocimiento y los trabajos previos en optimización de estos sistemas.</span></p>
<p class="MsoNormal"><span lang="ES">El <b>Capítulo 3</b> traduce las preguntas de investigación en objetivos concretos, siguiendo la metodología SMART. Además, describe con detalle el enfoque experimental: preparación del dataset, métricas de evaluación y configuración del proceso de optimización con Ray Tune y Optuna.</span></p>
<p class="MsoNormal"><span lang="ES">El núcleo del trabajo se desarrolla en el <b>Capítulo 4</b>, que presenta el estudio comparativo y la optimización de hiperparámetros en tres fases: planteamiento de la comparativa con evaluación de EasyOCR, PaddleOCR y DocTR; desarrollo de la optimización mediante 64 trials con Ray Tune; y análisis crítico de los resultados obtenidos.</span></p>
<p class="MsoNormal"><span lang="ES">Finalmente, el <b>Capítulo 5</b> sintetiza las contribuciones, evalúa el grado de cumplimiento de los objetivos y propone líneas de trabajo futuro. Los <b>Anexos</b> proporcionan acceso al repositorio de código fuente y datos, así como tablas detalladas de resultados experimentales.</span></p><h1 style="mso-list:l22 level1 lfo18"><span style="mso-bookmark:_Toc14106979"><span style="mso-bookmark:_Toc437515557"><a name="_Toc147741195"></a><a name="_Toc160619809"><span style="mso-bookmark:_Toc147741195"><?if !supportLists?><span lang="ES" style='mso-fareast-font-family:"Calibri Light";mso-fareast-theme-font:
major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin;
text-transform:none'><span style="mso-list:Ignore">2.<span style='font:7.0pt "Times New Roman"'>  
</span></span></span><?endif?><span lang="ES" style="text-transform:none">Contexto
y estado del arte</span></span></a></span></span><span style="mso-bookmark:
_Toc14106979"><span style="mso-bookmark:_Toc437515557"><span lang="ES" style="text-transform:none"><o:p></o:p></span></span></span></h1><p class="MsoNormal"><span lang="ES">Para comprender el alcance y las decisiones tomadas en este trabajo, es necesario situarlo en su contexto tecnológico. El Reconocimiento Óptico de Caracteres ha recorrido un largo camino desde los primeros sistemas de plantillas de los años 50 hasta las sofisticadas arquitecturas de aprendizaje profundo actuales. A lo largo de este capítulo se revisan los fundamentos técnicos del OCR moderno. Se analizan las principales soluciones de código abierto y se identifican los vacíos en la literatura que motivan la contribución de este trabajo.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Contexto del problema</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Definición y Evolución Histórica del OCR</span></h3>
<p class="MsoNormal"><span lang="ES">El Reconocimiento Óptico de Caracteres (OCR) es el proceso de conversión de imágenes de texto manuscrito, mecanografiado o impreso en texto codificado digitalmente. Esta tecnología permite la digitalización masiva de documentos, facilitando su búsqueda, edición y almacenamiento electrónico. La tecnología OCR ha evolucionado significativamente desde sus orígenes en la década de 1950, atravesando cuatro generaciones claramente diferenciadas:</span></p>
<h4><span lang="ES">Primera Generación (1950-1970): Sistemas basados en plantillas</span></h4>
<p class="MsoNormal"><span lang="ES">Los primeros sistemas OCR surgieron en la década de 1950 con el objetivo de automatizar la lectura de documentos bancarios y postales. Estos sistemas utilizaban técnicas de correspondencia de plantillas (<i>template matching</i>), donde cada carácter de entrada se comparaba píxel a píxel con un conjunto predefinido de plantillas (Mori et al., 1992).</span></p>
<p class="MsoNormal"><span lang="ES">Las principales limitaciones de esta generación incluían:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Dependencia de fuentes tipográficas específicas (OCR-A, OCR-B)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Incapacidad para manejar variaciones en tamaño, rotación o estilo</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Alto coste computacional para la época</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Sensibilidad extrema al ruido y degradación de la imagen</span></p>
<p class="MsoNormal"><span lang="ES">A pesar de sus limitaciones, estos sistemas sentaron las bases para el desarrollo posterior del campo y demostraron la viabilidad comercial del reconocimiento automático de texto.</span></p>
<h4><span lang="ES">Segunda Generación (1970-1990): Extracción de características</span></h4>
<p class="MsoNormal"><span lang="ES">La segunda generación introdujo técnicas más sofisticadas basadas en la extracción de características geométricas y estructurales de los caracteres. En lugar de comparar imágenes completas, estos sistemas extraían propiedades como:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Número y posición de trazos</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Proporciones geométricas (altura, anchura, relación de aspecto)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Momentos estadísticos de la distribución de píxeles</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Características topológicas (bucles, intersecciones, terminaciones)</span></p>
<p class="MsoNormal"><span lang="ES">Los clasificadores estadísticos, como el análisis discriminante lineal y los k-vecinos más cercanos (k-NN), se utilizaban para asignar cada vector de características a una clase de carácter (Trier et al., 1996). Esta aproximación permitió mayor robustez frente a variaciones tipográficas, aunque seguía requiriendo un diseño manual cuidadoso de las características a extraer.</span></p>
<h4><span lang="ES">Tercera Generación (1990-2010): Redes neuronales y modelos probabilísticos</span></h4>
<p class="MsoNormal"><span lang="ES">La tercera generación marcó la introducción de técnicas de aprendizaje automático más avanzadas. Los Modelos Ocultos de Markov (HMM) se convirtieron en el estándar para el reconocimiento de secuencias de caracteres, especialmente en el reconocimiento de escritura manuscrita (Plamondon &amp; Srihari, 2000).</span></p>
<p class="MsoNormal"><span lang="ES">Las Redes Neuronales Artificiales (ANN) también ganaron popularidad en esta época, con arquitecturas como el Perceptrón Multicapa (MLP) demostrando capacidades superiores de generalización. El trabajo seminal de LeCun et al. (1998) con las redes convolucionales (CNN) para el reconocimiento de dígitos manuscritos (dataset MNIST) estableció los fundamentos para la siguiente revolución.</span></p>
<p class="MsoNormal"><span lang="ES">Las características de esta generación incluían:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Aprendizaje automático de características discriminativas</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Modelado probabilístico de secuencias de caracteres</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Mayor robustez frente a ruido y degradación</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Capacidad de incorporar conocimiento lingüístico mediante modelos de lenguaje</span></p>
<h4><span lang="ES">Cuarta Generación (2010-presente): Aprendizaje profundo</span></h4>
<p class="MsoNormal"><span lang="ES">La cuarta y actual generación está dominada por arquitecturas de aprendizaje profundo que han superado ampliamente el rendimiento de los métodos tradicionales. Los avances clave incluyen:</span></p>
<p class="MsoNormal"><span lang="ES"><b>Redes Convolucionales Profundas (Deep CNNs)</b>: Arquitecturas como VGGNet, ResNet e Inception permiten la extracción automática de características jerárquicas a múltiples escalas, eliminando la necesidad de diseño manual de características (Krizhevsky et al., 2012).</span></p>
<p class="MsoNormal"><span lang="ES"><b>Redes Recurrentes (RNN/LSTM)</b>: Las redes Long Short-Term Memory (LSTM) permiten modelar dependencias a largo plazo en secuencias de caracteres, siendo fundamentales para el reconocimiento de texto de longitud variable (Graves et al., 2009).</span></p>
<p class="MsoNormal"><span lang="ES"><b>Mecanismos de Atención y Transformers</b>: La arquitectura Transformer (Vaswani et al., 2017) y sus variantes han revolucionado el procesamiento de secuencias, permitiendo capturar relaciones globales sin las limitaciones de las RNN. Modelos como TrOCR (Li et al., 2023) representan el estado del arte actual.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Connectionist Temporal Classification (CTC)</b>: La función de pérdida CTC (Graves et al., 2006) permite entrenar modelos de reconocimiento de secuencias sin necesidad de alineamiento carácter por carácter, simplificando enormemente el proceso de entrenamiento.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Pipeline Moderno de OCR</span></h3>
<p class="MsoNormal"><span lang="ES">Los sistemas OCR modernos siguen típicamente un pipeline de dos etapas principales, precedidas opcionalmente por una fase de preprocesamiento:</span></p>
<a name="_Ref_Fig1"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->1<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Pipeline de un sistema OCR moderno</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Pipeline de un sistema OCR moderno" height="101" src="figures/figura_1.png" style="width:424.5pt;height:75.75pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Etapa de Preprocesamiento</span></h4>
<p class="MsoNormal"><span lang="ES">Antes de la detección, muchos sistemas aplican técnicas de preprocesamiento para mejorar la calidad de la imagen de entrada:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Binarización</b>: Conversión a imagen binaria (blanco/negro) mediante técnicas como Otsu o Sauvola</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Corrección de inclinación (deskewing)</b>: Alineamiento horizontal del texto</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Eliminación de ruido</b>: Filtros morfológicos y de suavizado</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Normalización de contraste</b>: Mejora de la legibilidad mediante ecualización de histograma</span></p>
<h4><span lang="ES">Etapa 1: Detección de Texto (Text Detection)</span></h4>
<p class="MsoNormal"><span lang="ES">La detección de texto tiene como objetivo localizar todas las regiones de una imagen que contienen texto. Esta tarea es particularmente desafiante debido a la variabilidad en:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Tamaño y orientación del texto</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Fondos complejos y oclusiones parciales</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Texto curvo o deformado</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Múltiples idiomas y scripts en una misma imagen</span></p>
<p class="MsoNormal"><span lang="ES">Las arquitecturas más utilizadas para detección de texto incluyen:</span></p>
<p class="MsoNormal"><span lang="ES"><b>EAST (Efficient and Accurate Scene Text Detector)</b>: Propuesto por Zhou et al. (2017), EAST es un detector de una sola etapa que predice directamente cuadriláteros rotados o polígonos que encierran el texto. Su arquitectura FCN (Fully Convolutional Network) permite procesamiento eficiente de imágenes de alta resolución.</span></p>
<p class="MsoNormal"><span lang="ES"><b>CRAFT (Character Region Awareness for Text Detection)</b>: Desarrollado por Baek et al. (2019), CRAFT detecta regiones de caracteres individuales y las agrupa en palabras mediante el análisis de mapas de afinidad. Esta aproximación bottom-up es especialmente efectiva para texto con espaciado irregular.</span></p>
<p class="MsoNormal"><span lang="ES"><b>DB (Differentiable Binarization)</b>: Propuesto por Liao et al. (2020), DB introduce una operación de binarización diferenciable que permite entrenar end-to-end un detector de texto basado en segmentación. Esta arquitectura es la utilizada por PaddleOCR y destaca por su velocidad y precisión.</span></p>
<a name="_Ref_Tab4"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->4<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Comparativa de arquitecturas de detección de texto.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Arquitectura</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tipo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Salida</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Fortalezas</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Limitaciones</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EAST</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Single-shot</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Cuadriláteros rotados</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Rápido, simple</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Dificultad con texto curvo</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CRAFT</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Bottom-up</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Polígonos de palabra</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Robusto a espaciado</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Mayor coste computacional</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DB</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Segmentación</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Polígonos arbitrarios</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Rápido, preciso</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Sensible a parámetros</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia a partir de Zhou et al. (2017), Baek et al. (2019), Liao et al. (2020).</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Etapa 2: Reconocimiento de Texto (Text Recognition)</span></h4>
<p class="MsoNormal"><span lang="ES">Una vez detectadas las regiones de texto, la etapa de reconocimiento transcribe el contenido visual a texto digital. Las arquitecturas predominantes son:</span></p>
<p class="MsoNormal"><span lang="ES"><b>CRNN (Convolutional Recurrent Neural Network)</b>: Propuesta por Shi et al. (2016), CRNN combina una CNN para extracción de características visuales con una RNN bidireccional (típicamente LSTM) para modelado de secuencias, entrenada con pérdida CTC. Esta arquitectura estableció el paradigma encoder-decoder que domina el campo.</span></p>
<p class="MsoNormal"><span lang="ES">La arquitectura CRNN consta de tres componentes:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Capas convolucionales</b>: Extraen características visuales de la imagen de entrada</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">2.<span style="font-size:7pt">   </span><b>Capas recurrentes</b>: Modelan las dependencias secuenciales entre características</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span><b>Capa de transcripción</b>: Convierte las predicciones de la RNN en secuencias de caracteres mediante CTC</span></p>
<p class="MsoNormal"><span lang="ES"><b>SVTR (Scene-Text Visual Transformer Recognition)</b>: Desarrollado por Du et al. (2022), SVTR aplica la arquitectura Transformer al reconocimiento de texto, utilizando parches de imagen como tokens de entrada. Esta aproximación elimina la necesidad de RNN y permite capturar dependencias globales de manera más eficiente.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Arquitecturas con Atención</b>: Los modelos encoder-decoder con mecanismos de atención (Bahdanau et al., 2015) permiten al decodificador "enfocarse" en diferentes partes de la imagen mientras genera cada carácter. Esto es especialmente útil para texto largo o con layouts complejos.</span></p>
<p class="MsoNormal"><span lang="ES"><b>TrOCR (Transformer-based OCR)</b>: Propuesto por Li et al. (2023), TrOCR utiliza un Vision Transformer (ViT) como encoder y un Transformer de lenguaje como decoder, logrando resultados estado del arte en múltiples benchmarks.</span></p>
<a name="_Ref_Tab5"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->5<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Comparativa de arquitecturas de reconocimiento de texto.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Arquitectura</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Encoder</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Decoder</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Pérdida</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Características</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CRNN</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CNN</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">BiLSTM</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CTC</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Rápido, robusto</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">SVTR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">ViT</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Linear</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CTC</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Sin recurrencia</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Attention-based</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CNN</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">LSTM+Attn</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Cross-entropy</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Flexible longitud</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">TrOCR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">ViT</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Transformer</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Cross-entropy</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Estado del arte</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia a partir de Shi et al. (2016), Du et al. (2022), Li et al. (2023).</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Métricas de Evaluación</span></h3>
<p class="MsoNormal"><span lang="ES">La evaluación rigurosa de sistemas OCR requiere métricas estandarizadas que permitan comparaciones objetivas. Las métricas fundamentales se basan en la distancia de edición de Levenshtein.</span></p>
<h4><span lang="ES">Distancia de Levenshtein</span></h4>
<p class="MsoNormal"><span lang="ES">La distancia de Levenshtein (Levenshtein, 1966) entre dos cadenas es el número mínimo de operaciones de edición (inserción, eliminación, sustitución) necesarias para transformar una cadena en otra. Formalmente, para dos cadenas <i>a</i> y <i>b</i>:</span></p>
<p class="MsoNormal" style="text-align:center"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>d</mi><mo stretchy="false">(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo stretchy="false">)</mo><mo>=</mo><mo>min</mo><mo stretchy="false">(</mo><mtext>inserciones</mtext><mo>+</mo><mtext>eliminaciones</mtext><mo>+</mo><mtext>sustituciones</mtext><mo stretchy="false">)</mo></mrow></math></p>
<p class="MsoNormal"><span lang="ES">Esta métrica es fundamental para calcular tanto CER como WER.</span></p>
<h4><span lang="ES">Character Error Rate (CER)</span></h4>
<p class="MsoNormal"><span lang="ES">El CER mide el error a nivel de carácter y se calcula como:</span></p>
<p class="MsoNormal" style="text-align:center"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>C</mi><mi>E</mi><mi>R</mi><mo>=</mo><mfrac><mrow><mi>S</mi><mo>+</mo><mi>D</mi><mo>+</mo><mi>I</mi></mrow><mrow><mi>N</mi></mrow></mfrac></mrow></math></p>
<p class="MsoNormal"><span lang="ES">Donde:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">S = número de sustituciones de caracteres</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">D = número de eliminaciones de caracteres</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">I = número de inserciones de caracteres</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">N = número total de caracteres en el texto de referencia</span></p>
<p class="MsoNormal"><span lang="ES">Un CER bajo indica que el sistema comete pocos errores a nivel de carácter. Para aplicaciones críticas se requiere un nivel de error muy reducido, mientras que en tareas de búsqueda o archivo pueden aceptarse errores mayores.</span></p>
<h4><span lang="ES">Word Error Rate (WER)</span></h4>
<p class="MsoNormal"><span lang="ES">El WER mide el error a nivel de palabra, utilizando la misma fórmula pero considerando palabras como unidades:</span></p>
<p class="MsoNormal" style="text-align:center"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>W</mi><mi>E</mi><mi>R</mi><mo>=</mo><mfrac><mrow><msub><mi>S</mi><mi>w</mi></msub><mo>+</mo><msub><mi>D</mi><mi>w</mi></msub><mo>+</mo><msub><mi>I</mi><mi>w</mi></msub></mrow><mrow><msub><mi>N</mi><mi>w</mi></msub></mrow></mfrac></mrow></math></p>
<p class="MsoNormal"><span lang="ES">El WER es generalmente mayor que el CER, ya que un solo error de carácter puede invalidar una palabra completa. Esta diferencia es relevante cuando se comparan sistemas que preservan caracteres pero pierden palabras completas.</span></p>
<h4><span lang="ES">Otras Métricas Complementarias</span></h4>
<p class="MsoNormal"><span lang="ES"><b>Precision y Recall a nivel de palabra</b>: Útiles cuando se evalúa la capacidad del sistema para detectar palabras específicas.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Bag-of-Words Accuracy</b>: Mide la proporción de palabras correctamente reconocidas independientemente de su orden.</span></p>
<p class="MsoNormal"><span lang="ES"><b>BLEU Score</b>: Adaptado de traducción automática, mide la similitud entre el texto predicho y la referencia considerando n-gramas.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Particularidades del OCR para el Idioma Español</span></h3>
<p class="MsoNormal"><span lang="ES">El español, como lengua romance, presenta características específicas que impactan el rendimiento de los sistemas OCR:</span></p>
<h4><span lang="ES">Características Ortográficas</span></h4>
<p class="MsoNormal"><span lang="ES"><b>Caracteres especiales</b>: El español incluye caracteres no presentes en el alfabeto inglés básico:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">La letra eñe (ñ, Ñ)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Vocales acentuadas (á, é, í, ó, ú, Á, É, Í, Ó, Ú)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Diéresis sobre u (ü, Ü)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Signos de puntuación invertidos (¿, ¡)</span></p>
<p class="MsoNormal"><span lang="ES">Estos caracteres requieren que los modelos OCR incluyan dichos símbolos en su vocabulario de salida y que el entrenamiento incluya suficientes ejemplos de cada uno.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Diacríticos y acentos</b>: Los acentos gráficos del español son elementos pequeños que pueden confundirse fácilmente con ruido, artefactos de imagen o signos de puntuación. La distinción entre vocales acentuadas y no acentuadas es crucial para el significado (e.g., "él" vs "el", "más" vs "mas").</span></p>
<h4><span lang="ES">Características Lingüísticas</span></h4>
<p class="MsoNormal"><span lang="ES"><b>Longitud de palabras</b>: Las palabras en español tienden a ser más largas que en inglés debido a la morfología flexiva rica (conjugaciones verbales, géneros, plurales). Esto puede aumentar la probabilidad de error acumulativo.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Vocabulario</b>: El español tiene un vocabulario amplio con muchas variantes morfológicas de cada raíz. Los modelos de lenguaje utilizados para post-corrección deben contemplar esta diversidad.</span></p>
<h4><span lang="ES">Recursos y Datasets</span></h4>
<p class="MsoNormal"><span lang="ES">Los recursos disponibles para OCR en español son significativamente menores que para inglés o chino:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Menor cantidad de datasets etiquetados de gran escala</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Menos modelos preentrenados específicos para español</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Documentación y tutoriales predominantemente en inglés</span></p>
<p class="MsoNormal"><span lang="ES">Esta escasez de recursos específicos para español motiva la necesidad de técnicas de adaptación como la optimización de hiperparámetros explorada en este trabajo.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Estado del arte</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Soluciones OCR de Código Abierto</span></h3>
<p class="MsoNormal"><span lang="ES">En los últimos años han surgido varias soluciones OCR de código abierto que democratizan el acceso a esta tecnología. A continuación se analizan en detalle las tres principales alternativas evaluadas en este trabajo.</span></p>
<h4><span lang="ES">EasyOCR</span></h4>
<p class="MsoNormal"><span lang="ES">EasyOCR es una biblioteca de OCR desarrollada por Jaided AI (2020) con el objetivo de proporcionar una solución de fácil uso que soporte múltiples idiomas. Actualmente soporta más de 80 idiomas, incluyendo español.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Arquitectura técnica</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Detector</b>: CRAFT (Character Region Awareness for Text Detection)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Reconocedor</b>: CRNN con backbone ResNet/VGG + BiLSTM + CTC</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Modelos preentrenados</b>: Disponibles para descarga automática</span></p>
<p class="MsoNormal"><span lang="ES"><b>Características principales</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">API simple de una línea para casos de uso básicos</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Soporte para GPU (CUDA) y CPU</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Reconocimiento de múltiples idiomas en una misma imagen</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Bajo consumo de memoria comparado con otras soluciones</span></p>
<p class="MsoNormal"><span lang="ES"><b>Limitaciones identificadas</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Opciones de configuración limitadas (pocos hiperparámetros ajustables)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Menor precisión en documentos con layouts complejos</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Actualizaciones menos frecuentes que otras alternativas</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Documentación menos exhaustiva</span></p>
<p class="MsoNormal"><span lang="ES"><b>Caso de uso ideal</b>: Prototipado rápido, aplicaciones con restricciones de memoria, proyectos que requieren soporte multilingüe inmediato.</span></p>
<h4><span lang="ES">PaddleOCR</span></h4>
<p class="MsoNormal"><span lang="ES">PaddleOCR es el sistema OCR desarrollado por Baidu como parte del ecosistema PaddlePaddle (2024). Representa una de las soluciones más completas y activamente mantenidas en el ecosistema de código abierto. La versión PP-OCRv5, utilizada en este trabajo, incorpora los últimos avances en el campo.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Arquitectura técnica</b>:</span></p>
<p class="MsoNormal"><span lang="ES">El pipeline de PaddleOCR consta de tres módulos principales:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Detector de texto (DB - Differentiable Binarization)</b>:</span></p>
<p class="MsoNormal"><span lang="ES"> - Backbone: ResNet18/ResNet50 - Neck: FPN (Feature Pyramid Network) - Head: Segmentación con binarización diferenciable - Salida: Polígonos que encierran regiones de texto</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Clasificador de orientación</b>:</span></p>
<p class="MsoNormal"><span lang="ES"> - Determina si el texto está rotado 0° o 180° - Permite corrección automática de texto invertido - Opcional pero recomendado para documentos escaneados</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Reconocedor de texto (SVTR)</b>:</span></p>
<p class="MsoNormal"><span lang="ES"> - Encoder: Vision Transformer modificado - Decoder: CTC o Attention-based - Vocabulario: Configurable por idioma</span></p>
<p class="MsoNormal"><span lang="ES"><b>Hiperparámetros configurables</b>:</span></p>
<p class="MsoNormal"><span lang="ES">PaddleOCR expone numerosos hiperparámetros que permiten ajustar el comportamiento del sistema. Los más relevantes para este trabajo son:</span></p>
<a name="_Ref_Tab6"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->6<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Hiperparámetros de detección de PaddleOCR.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Parámetro</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Descripción</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Rango</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Defecto</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Umbral de probabilidad para píxeles de texto</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[0.0, 1.0]</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.3</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_box_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Umbral de confianza para cajas detectadas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[0.0, 1.0]</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.6</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Factor de expansión de cajas detectadas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[0.0, 3.0]</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">1.5</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_limit_side_len</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Tamaño máximo del lado de imagen</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[320, 2560]</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">960</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Documentación oficial de PaddleOCR (PaddlePaddle, 2024).</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Tab7"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->7<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Hiperparámetros de reconocimiento de PaddleOCR.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Parámetro</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Descripción</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Rango</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Defecto</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_rec_score_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Umbral de confianza para resultados</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[0.0, 1.0]</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.5</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_textline_orientation</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Activar clasificación de orientación de línea</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">{True, False}</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">False</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">rec_batch_size</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Tamaño de batch para reconocimiento</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[1, 64]</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">6</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Documentación oficial de PaddleOCR (PaddlePaddle, 2024).</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Tab8"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->8<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Hiperparámetros de preprocesamiento de PaddleOCR.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Parámetro</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Descripción</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Impacto</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Clasificación de orientación del documento</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Alto para documentos escaneados</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Corrección de deformación/curvatura</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Alto para fotos de documentos</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_angle_cls</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Clasificador de ángulo 0°/180°</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio para documentos rotados</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Documentación oficial de PaddleOCR (PaddlePaddle, 2024).</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES"><b>Fortalezas de PaddleOCR</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Alta precisión en múltiples benchmarks</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Pipeline altamente configurable</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Modelos optimizados para servidor (mayor precisión) y móvil (mayor velocidad)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Documentación exhaustiva (aunque principalmente en chino)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Comunidad activa y actualizaciones frecuentes</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Soporte para entrenamiento personalizado (fine-tuning)</span></p>
<p class="MsoNormal"><span lang="ES"><b>Limitaciones</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Dependencia del framework PaddlePaddle (menos popular que PyTorch/TensorFlow)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Curva de aprendizaje más pronunciada</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Documentación en inglés menos completa que en chino</span></p>
<h4><span lang="ES">DocTR</span></h4>
<p class="MsoNormal"><span lang="ES">DocTR (Document Text Recognition) es una biblioteca desarrollada por Mindee (2021), empresa especializada en procesamiento inteligente de documentos. Está orientada a la comunidad de investigación y ofrece una API limpia basada en TensorFlow/PyTorch.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Arquitectura técnica</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Detectores disponibles</b>: DB (db_resnet50), LinkNet (linknet_resnet18)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Reconocedores disponibles</b>: CRNN (crnn_vgg16_bn), SAR (sar_resnet31), ViTSTR (vitstr_small)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Framework</b>: TensorFlow 2.x o PyTorch</span></p>
<p class="MsoNormal"><span lang="ES"><b>Características principales</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">API Pythonic bien diseñada</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Salida estructurada con información de confianza y geometría</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Integración nativa con Hugging Face Hub</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Documentación orientada a investigación</span></p>
<p class="MsoNormal"><span lang="ES"><b>Limitaciones identificadas</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Menor rendimiento en español comparado con PaddleOCR según pruebas preliminares</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Comunidad más pequeña</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Menos opciones de modelos preentrenados para idiomas no ingleses</span></p>
<h4><span lang="ES">Comparativa Detallada de Soluciones</span></h4>
<a name="_Ref_Tab9"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->9<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Comparativa técnica de soluciones OCR de código abierto.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Aspecto</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">EasyOCR</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">PaddleOCR</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">DocTR</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Framework</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PyTorch</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddlePaddle</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">TF/PyTorch</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Detector</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CRAFT</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DB</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DB/LinkNet</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Reconocedor</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CRNN</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">SVTR/CRNN</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CRNN/SAR/ViTSTR</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Idiomas</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Multilingüe</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Multilingüe</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Limitado</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Configurabilidad</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Baja</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Alta</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Media</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Documentación</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Media</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Alta (CN)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Alta (EN)</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Actividad</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Media</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Alta</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Media</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Licencia</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Apache 2.0</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Apache 2.0</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Apache 2.0</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia a partir de documentación oficial (2024).</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Tab10"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->10<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Comparativa de facilidad de uso.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Aspecto</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">EasyOCR</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">PaddleOCR</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">DocTR</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Instalación</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">pip install</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">pip install</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">pip install</span></span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Complejidad de uso</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Baja</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Media</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Media</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">GPU requerida</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Opcional</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Opcional</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Opcional</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Requisitos de memoria</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Bajos</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medios</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medios</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia a partir de documentación oficial.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Optimización de Hiperparámetros</span></h3>
<h4><span lang="ES">Fundamentos Teóricos</span></h4>
<p class="MsoNormal"><span lang="ES">La optimización de hiperparámetros (HPO, <i>Hyperparameter Optimization</i>) es el proceso de encontrar la configuración óptima de los parámetros que controlan el proceso de aprendizaje o inferencia de un modelo, pero que no se aprenden directamente de los datos (Feurer &amp; Hutter, 2019).</span></p>
<p class="MsoNormal"><span lang="ES">A diferencia de los parámetros del modelo (como los pesos de una red neuronal), los hiperparámetros se establecen antes del entrenamiento e incluyen:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Tasa de aprendizaje, tamaño de batch, número de épocas</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Arquitectura del modelo (número de capas, unidades por capa)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Parámetros de regularización (dropout, weight decay)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Umbrales de decisión en tiempo de inferencia</b> (relevante para este trabajo)</span></p>
<p class="MsoNormal"><span lang="ES">El problema de HPO puede formalizarse como:</span></p>
<p class="MsoNormal" style="text-align:center"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><msup><mi>λ</mi><mo>*</mo></msup><mo>=</mo><msub><mo>argmin</mo><mrow><mi>λ</mi><mo></mo><mi>Λ</mi></mrow></msub><mi></mi><mo stretchy="false">(</mo><msub><mi>M</mi><mi>λ</mi></msub><mo>,</mo><msub><mi>D</mi><mrow><mi>v</mi><mi>a</mi><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow></math></p>
<p class="MsoNormal"><span lang="ES">Donde:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>λ</mi></mrow></math> es un vector de hiperparámetros</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>Λ</mi></mrow></math> es el espacio de búsqueda</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><msub><mi>M</mi><mi>λ</mi></msub></mrow></math> es el modelo configurado con <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>λ</mi></mrow></math></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi></mi></mrow></math> es la función de pérdida</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><msub><mi>D</mi><mrow><mi>v</mi><mi>a</mi><mi>l</mi></mrow></msub></mrow></math> es el conjunto de validación</span></p>
<h4><span lang="ES">Métodos de Optimización</span></h4>
<p class="MsoNormal"><span lang="ES"><b>Grid Search (Búsqueda en rejilla)</b>:</span></p>
El método más simple consiste en evaluar todas las combinaciones posibles de valores discretizados de los hiperparámetros. Para <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>k</mi></mrow></math> hiperparámetros con <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>n</mi></mrow></math> valores cada uno, requiere <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><msup><mi>n</mi><mi>k</mi></msup></mrow></math> evaluaciones.
<p class="MsoNormal"><span lang="ES">Ventajas:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Exhaustivo y reproducible</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Fácil de paralelizar</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Garantiza encontrar el óptimo dentro de la rejilla</span></p>
<p class="MsoNormal"><span lang="ES">Desventajas:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Coste exponencial con el número de hiperparámetros</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Ineficiente si algunos hiperparámetros son más importantes que otros</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">No aprovecha información de evaluaciones previas</span></p>
<p class="MsoNormal"><span lang="ES"><b>Random Search (Búsqueda aleatoria)</b>:</span></p>
<p class="MsoNormal"><span lang="ES">Propuesto por Bergstra &amp; Bengio (2012), Random Search muestrea configuraciones aleatoriamente del espacio de búsqueda. Sorprendentemente, supera a Grid Search en muchos escenarios prácticos.</span></p>
<p class="MsoNormal"><span lang="ES">La intuición es que, cuando solo algunos hiperparámetros son importantes, Random Search explora más valores de estos parámetros críticos mientras Grid Search desperdicia evaluaciones variando parámetros irrelevantes.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Optimización Bayesiana</b>:</span></p>
<p class="MsoNormal"><span lang="ES">La optimización bayesiana modela la función objetivo mediante un modelo probabilístico sustituto (<i>surrogate model</i>) y utiliza una función de adquisición para decidir qué configuración evaluar a continuación (Bergstra et al., 2011).</span></p>
<p class="MsoNormal"><span lang="ES">El proceso iterativo es:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span>Ajustar el modelo sustituto a las observaciones actuales</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">2.<span style="font-size:7pt">   </span>Optimizar la función de adquisición para seleccionar el siguiente punto</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span>Evaluar la función objetivo en el punto seleccionado</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">4.<span style="font-size:7pt">   </span>Actualizar las observaciones y repetir</span></p>
<p class="MsoNormal"><span lang="ES">Los modelos sustitutos más comunes son:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Procesos Gaussianos (GP)</b>: Proporcionan incertidumbre bien calibrada pero escalan pobremente</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Random Forests</b>: Manejan bien espacios de alta dimensión y variables categóricas</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Tree-structured Parzen Estimator (TPE)</b>: Modela densidades en lugar de la función objetivo</span></p>
<h4><span lang="ES">Tree-structured Parzen Estimator (TPE)</span></h4>
TPE, propuesto por Bergstra et al. (2011) e implementado en Optuna, es particularmente efectivo para HPO. En lugar de modelar <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>p</mi><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">|</mo><mi>λ</mi><mo stretchy="false">)</mo></mrow></math> directamente, TPE modela:
<p class="MsoNormal" style="text-align:center"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>p</mi><mo stretchy="false">(</mo><mi>λ</mi><mo stretchy="false">|</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mrow><mo fence="true" form="prefix" stretchy="true">{</mo><mtable><mtr><mtd columnalign="left"><mi>l</mi><mo stretchy="false">(</mo><mi>λ</mi><mo stretchy="false">)</mo></mtd><mtd columnalign="left"><mtext>si </mtext><mi>y</mi><mo>&lt;</mo><msup><mi>y</mi><mo>*</mo></msup></mtd></mtr><mtr><mtd columnalign="left"><mi>g</mi><mo stretchy="false">(</mo><mi>λ</mi><mo stretchy="false">)</mo></mtd><mtd columnalign="left"><mtext>si </mtext><mi>y</mi><mo></mo><msup><mi>y</mi><mo>*</mo></msup></mtd></mtr></mtable></mrow></mrow></math></p>
Donde <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><msup><mi>y</mi><mo>*</mo></msup></mrow></math> es un umbral (típicamente el percentil 15-25 de las observaciones), <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>l</mi><mo stretchy="false">(</mo><mi>λ</mi><mo stretchy="false">)</mo></mrow></math> es la densidad de hiperparámetros con buen rendimiento, y <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>g</mi><mo stretchy="false">(</mo><mi>λ</mi><mo stretchy="false">)</mo></mrow></math> es la densidad de hiperparámetros con mal rendimiento.
<p class="MsoNormal"><span lang="ES">La función de adquisición Expected Improvement se aproxima como:</span></p>
<p class="MsoNormal" style="text-align:center"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>E</mi><mi>I</mi><mo stretchy="false">(</mo><mi>λ</mi><mo stretchy="false">)</mo><mo></mo><mfrac><mrow><mi>l</mi><mo stretchy="false">(</mo><mi>λ</mi><mo stretchy="false">)</mo></mrow><mrow><mi>g</mi><mo stretchy="false">(</mo><mi>λ</mi><mo stretchy="false">)</mo></mrow></mfrac></mrow></math></p>
Configuraciones con alta probabilidad bajo <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>l</mi></mrow></math> y baja probabilidad bajo <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>g</mi></mrow></math> tienen mayor Expected Improvement.
<p class="MsoNormal"><span lang="ES"><b>Ventajas de TPE</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Maneja naturalmente espacios condicionales (hiperparámetros que dependen de otros)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Eficiente para espacios de alta dimensión</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">No requiere derivadas de la función objetivo</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Implementación eficiente en Optuna</span></p>
<h4><span lang="ES">Ray Tune</span></h4>
<p class="MsoNormal"><span lang="ES">Ray Tune (Liaw et al., 2018) es un framework de optimización de hiperparámetros escalable construido sobre Ray, un sistema de computación distribuida. Sus características principales incluyen:</span></p>
<p class="MsoNormal"><span lang="ES"><b>Escalabilidad</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Ejecución paralela de múltiples trials</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Distribución automática en clusters</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Soporte para recursos heterogéneos (CPU/GPU)</span></p>
<p class="MsoNormal"><span lang="ES"><b>Flexibilidad</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Integración con múltiples algoritmos de búsqueda (Optuna, HyperOpt, Ax, etc.)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Schedulers avanzados (ASHA, PBT, BOHB)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Checkpointing y recuperación de fallos</span></p>
<p class="MsoNormal"><span lang="ES"><b>Early Stopping</b>:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">ASHA (Asynchronous Successive Halving Algorithm): Termina trials poco prometedores</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">PBT (Population-Based Training): Evoluciona hiperparámetros durante el entrenamiento</span></p>
<p class="MsoNormal"><span lang="ES"><b>Integración con Optuna</b>:</span></p>
<p class="MsoNormal"><span lang="ES">La combinación de Ray Tune con OptunaSearch permite:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span>Utilizar TPE como algoritmo de búsqueda</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">2.<span style="font-size:7pt">   </span>Paralelizar la evaluación de trials</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span>Beneficiarse de la infraestructura de Ray para distribución</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">4.<span style="font-size:7pt">   </span>Acceder a las visualizaciones de Optuna</span></p>
<a name="_Ref_Fig2"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->2<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Ciclo de optimización con Ray Tune y Optuna</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Ciclo de optimización con Ray Tune y Optuna" height="111" src="figures/figura_2.png" style="width:424.5pt;height:83.25pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">HPO en Sistemas OCR</span></h4>
<p class="MsoNormal"><span lang="ES">La aplicación de HPO a sistemas OCR ha sido explorada en varios contextos:</span></p>
<p class="MsoNormal"><span lang="ES"><b>Optimización de preprocesamiento</b>:</span></p>
<p class="MsoNormal"><span lang="ES">Liang et al. (2005) propusieron optimizar parámetros de binarización adaptativa para mejorar el OCR de documentos degradados. Los parámetros optimizados incluían tamaño de ventana, factor de corrección y umbral local.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Optimización de arquitectura</b>:</span></p>
<p class="MsoNormal"><span lang="ES">Breuel (2013) exploró la selección automática de arquitecturas de red para reconocimiento de texto manuscrito, optimizando número de capas, unidades y tipo de activación.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Optimización de post-procesamiento</b>:</span></p>
<p class="MsoNormal"><span lang="ES">Schulz &amp; Kuhn (2017) optimizaron parámetros de modelos de lenguaje para corrección de errores OCR, incluyendo pesos de interpolación entre modelos de caracteres y palabras.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Vacío en la literatura</b>:</span></p>
<p class="MsoNormal"><span lang="ES">A pesar de estos trabajos, existe un vacío significativo respecto a la optimización sistemática de hiperparámetros de inferencia en pipelines OCR modernos como PaddleOCR. La mayoría de trabajos se centran en:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Entrenamiento de modelos (fine-tuning)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Preprocesamiento de imagen</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Post-procesamiento lingüístico</span></p>
<p class="MsoNormal"><span lang="ES">La optimización de umbrales de detección y reconocimiento en tiempo de inferencia ha recibido poca atención, especialmente para idiomas diferentes del inglés y chino.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Datasets y Benchmarks para Español</span></h3>
<h4><span lang="ES">Datasets Públicos</span></h4>
<p class="MsoNormal"><span lang="ES">Los principales recursos para evaluación de OCR en español incluyen:</span></p>
<p class="MsoNormal"><span lang="ES"><b>FUNSD-ES</b>: Versión en español del Form Understanding in Noisy Scanned Documents dataset. Contiene formularios escaneados con anotaciones de texto y estructura.</span></p>
<p class="MsoNormal"><span lang="ES"><b>MLT (ICDAR Multi-Language Text)</b>: Dataset multilingüe de las competiciones ICDAR que incluye muestras en español. Las ediciones recientes contienen texto en escenas naturales.</span></p>
<p class="MsoNormal"><span lang="ES"><b>XFUND</b>: Dataset de comprensión de formularios en múltiples idiomas, incluyendo español, con anotaciones de entidades y relaciones.</span></p>
<a name="_Ref_Tab11"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->11<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Datasets públicos con contenido en español.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Dataset</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tipo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Idiomas</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tamaño</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Uso principal</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">FUNSD-ES</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Formularios</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">ES</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Pequeño</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Document understanding</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">MLT</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Escenas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Multi (incl. ES)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Text detection</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">XFUND</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Formularios</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Multi (incl. ES)</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Information extraction</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia a partir de repositorios oficiales.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Limitaciones de Recursos para Español</span></h4>
<p class="MsoNormal"><span lang="ES">Comparado con inglés y chino, el español cuenta con:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Menor cantidad de datasets etiquetados de gran escala</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Menos benchmarks estandarizados</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Menor representación en competiciones internacionales (ICDAR)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Pocos modelos preentrenados específicos</span></p>
<p class="MsoNormal"><span lang="ES">Esta escasez de recursos específicos para español motivó la creación de un dataset propio basado en documentos académicos de UNIR para este trabajo.</span></p>
<p class="MsoNormal"><span lang="ES">Además, se priorizó un dataset propio aunque fuera de tamaño reducido porque el objetivo era evaluar texto académico en un formato sencillo y reproducible (texto plano con índice), sin tablas ni estructuras complejas. Ese perfil no está bien cubierto por datasets públicos centrados en formularios o escenas naturales, por lo que se optó por un corpus controlado y alineado con el dominio del TFM.</span></p>
<h4><span lang="ES">Trabajos Previos en OCR para Español</span></h4>
<p class="MsoNormal"><span lang="ES">Los trabajos previos en OCR para español se han centrado principalmente en:</span></p>
<p class="MsoNormal"><span lang="ES"><b>Digitalización de archivos históricos</b>: Múltiples proyectos han abordado el reconocimiento de manuscritos coloniales y documentos históricos en español, utilizando técnicas de HTR (Handwritten Text Recognition) adaptadas (Romero et al., 2013).</span></p>
<p class="MsoNormal"><span lang="ES"><b>Procesamiento de documentos de identidad</b>: Sistemas OCR especializados para DNI, pasaportes y documentos oficiales españoles y latinoamericanos (Bulatov et al., 2020).</span></p>
<p class="MsoNormal"><span lang="ES"><b>Reconocimiento de texto en escenas</b>: Participaciones en competiciones ICDAR para detección y reconocimiento de texto en español en imágenes naturales.</span></p>
<a name="_Ref_Tab12"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->12<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Trabajos previos relevantes en OCR para español.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Trabajo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Enfoque</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Contribución</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Romero et al. (2013)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">HTR histórico</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Modelos HMM para manuscritos</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Bulatov et al. (2020)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Documentos ID</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Pipeline especializado</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Fischer et al. (2012)</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Multilingual</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Transferencia entre idiomas</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">La optimización de hiperparámetros para documentos académicos en español representa una contribución original de este trabajo, abordando un nicho no explorado en la literatura.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Conclusiones del capítulo</span></h2>
<p class="MsoNormal"><span lang="ES">La revisión del estado del arte revela un panorama en el que las herramientas técnicas están maduras, pero su aplicación óptima para dominios específicos permanece poco explorada. Los sistemas OCR modernos, como PaddleOCR, EasyOCR y DocTR, ofrecen arquitecturas sofisticadas basadas en aprendizaje profundo que alcanzan resultados impresionantes en benchmarks estándar. Sin embargo, estos resultados no siempre se trasladan a documentos del mundo real, especialmente en idiomas con menos recursos como el español.</span></p>
<p class="MsoNormal"><span lang="ES">La evolución desde los sistemas de plantillas de los años 50 hasta los Transformers actuales ha sido espectacular, pero ha generado sistemas con decenas de hiperparámetros configurables cuyos valores por defecto representan compromisos generales, no configuraciones óptimas para dominios específicos. La literatura abunda en trabajos sobre entrenamiento y fine-tuning de modelos OCR, pero dedica poca atención a la optimización sistemática de los parámetros de inferencia, como umbrales de detección, opciones de preprocesamiento y filtros de confianza, que pueden marcar la diferencia entre un sistema usable y uno que requiere corrección manual extensiva.</span></p>
<p class="MsoNormal"><span lang="ES">Este vacío, combinado con las particularidades del español (acentos, eñes, signos invertidos) y la escasez de recursos específicos para este idioma, define el espacio de contribución del presente trabajo. Frameworks como Ray Tune y Optuna proporcionan las herramientas para abordar esta optimización de manera sistemática; PaddleOCR, con su pipeline altamente configurable, ofrece el sustrato técnico adecuado. El siguiente capítulo traduce esta oportunidad en objetivos concretos y una metodología experimental rigurosa.</span></p><h1 style="mso-list:l22 level1 lfo18"><span style="mso-bookmark:_Toc14106979"><span style="mso-bookmark:_Toc437515557"><a name="_Toc147741196"></a><a name="_Toc160619813"><span style="mso-bookmark:_Toc147741196"><?if !supportLists?><span lang="ES" style='mso-fareast-font-family:"Calibri Light";mso-fareast-theme-font:
major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin;
text-transform:none'><span style="mso-list:Ignore">3.<span style='font:7.0pt "Times New Roman"'>  
</span></span></span><?endif?><span lang="ES" style="text-transform:none">Objetivos
concretos y metodología de trabajo</span></span></a></span></span><span style="mso-bookmark:_Toc14106979"><span style="mso-bookmark:_Toc437515557"><span lang="ES" style="text-transform:none"><o:p></o:p></span></span></span></h1><p class="MsoNormal"><span lang="ES">La motivación presentada en el capítulo anterior se traduce ahora en objetivos concretos y medibles. Siguiendo la metodología SMART propuesta por Doran (1981), se define un objetivo general que guía el trabajo y cinco objetivos específicos que lo descomponen en metas alcanzables. La segunda parte del capítulo describe la metodología experimental diseñada para alcanzar estos objetivos.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Objetivo general</span></h2>
<p class="MsoQuote"><i><span lang="ES"><b>Optimizar el rendimiento de PaddleOCR para documentos académicos en español mediante ajuste de hiperparámetros, alcanzando un CER inferior al 2% sin requerir fine-tuning del modelo.</b></span></i></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Justificación SMART del Objetivo General</span></h3>
<a name="_Ref_Tab13"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->13<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Justificación SMART del objetivo general.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Criterio</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Cumplimiento</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Específico (S)</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Se define claramente qué se quiere lograr: optimizar PaddleOCR mediante ajuste de hiperparámetros para documentos en español</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Medible (M)</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Se establece una métrica cuantificable: CER &lt; 2%</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Alcanzable (A)</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Es viable dado que: (1) PaddleOCR permite configuración de hiperparámetros, (2) Ray Tune posibilita búsqueda automatizada, (3) Aceleración GPU disponible para experimentación eficiente</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Relevante (R)</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">El impacto es demostrable: mejora la extracción de texto en documentos académicos sin costes adicionales de infraestructura</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Temporal (T)</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">El plazo es un cuatrimestre, correspondiente al TFM</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Objetivos específicos</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">OE1: Comparar soluciones OCR de código abierto</span></h3>
<p class="MsoQuote"><i><span lang="ES"><b>Evaluar el rendimiento base de EasyOCR, PaddleOCR y DocTR en documentos académicos en español, utilizando CER y WER como métricas, para seleccionar el modelo más prometedor.</b></span></i></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">OE2: Preparar un dataset de evaluación</span></h3>
<p class="MsoQuote"><i><span lang="ES"><b>Construir un dataset estructurado de imágenes de documentos académicos en español con su texto de referencia (ground truth) extraído del PDF original.</b></span></i></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">OE3: Identificar hiperparámetros críticos</span></h3>
<p class="MsoQuote"><i><span lang="ES"><b>Analizar la correlación entre los hiperparámetros de PaddleOCR y las métricas de error para identificar los parámetros con mayor impacto en el rendimiento.</b></span></i></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">OE4: Optimizar hiperparámetros con Ray Tune</span></h3>
<p class="MsoQuote"><i><span lang="ES"><b>Ejecutar una búsqueda automatizada de hiperparámetros utilizando Ray Tune con Optuna, evaluando al menos 50 configuraciones diferentes.</b></span></i></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">OE5: Validar la configuración optimizada</span></h3>
<p class="MsoQuote"><i><span lang="ES"><b>Comparar el rendimiento de la configuración baseline versus la configuración optimizada sobre el dataset completo, documentando la mejora obtenida.</b></span></i></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Metodología del trabajo</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Visión General</span></h3>
<p class="MsoNormal"><span lang="ES">La metodología se estructura en cinco fases secuenciales, cada una de las cuales produce resultados que alimentan la siguiente. Desde la preparación del dataset hasta la validación final, el proceso sigue un diseño experimental. Esto permite reproducir y verificar cada paso.</span></p>
<a name="_Ref_Fig3"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->3<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Fases de la metodología experimental</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Fases de la metodología experimental" height="93" src="figures/figura_3.png" style="width:424.5pt;height:69.75pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES"><b>Descripción de las fases:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Fase 1 - Preparación del Dataset</b>: Conversión PDF a imágenes (300 DPI), extracción de ground truth con PyMuPDF</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Fase 2 - Benchmark Comparativo</b>: Evaluación de EasyOCR, PaddleOCR, DocTR con métricas CER/WER</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Fase 3 - Espacio de Búsqueda</b>: Identificación de hiperparámetros y configuración de Ray Tune + Optuna</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Fase 4 - Optimización</b>: Ejecución de 64 trials con paralelización (2 concurrentes)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Fase 5 - Validación</b>: Comparación baseline vs optimizado, análisis de correlaciones</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Fase 1: Preparación del Dataset</span></h3>
<h4><span lang="ES">Fuente de Datos</span></h4>
<p class="MsoNormal"><span lang="ES">Se utilizaron documentos PDF académicos de UNIR (Universidad Internacional de La Rioja), específicamente las instrucciones para la elaboración del TFE del Máster en Inteligencia Artificial.</span></p>
<h4><span lang="ES">Proceso de Conversión</span></h4>
<p class="MsoNormal"><span lang="ES">El script <span style="font-family:Consolas;font-size:10pt">prepare_dataset.ipynb</span> implementa:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Conversión PDF a imágenes</b>:</span></p>
<p class="MsoNormal"><span lang="ES"> - Biblioteca: PyMuPDF (fitz) - Resolución: 300 DPI - Formato de salida: PNG</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Extracción de texto de referencia</b>:</span></p>
<p class="MsoNormal"><span lang="ES"> - Método: <span style="font-family:Consolas;font-size:10pt">page.get_text("dict")</span> de PyMuPDF - Preservación de estructura de líneas - Tratamiento de texto vertical/marginal - Normalización de espacios y saltos de línea</span></p>
<h4><span lang="ES">Estructura del Dataset</span></h4>
<a name="_Ref_Fig4"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->4<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Estructura del dataset de evaluación</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Estructura del dataset de evaluación" height="505" src="figures/figura_4.png" style="width:424.5pt;height:378.75pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Clase ImageTextDataset</span></h4>
<p class="MsoNormal"><span lang="ES">Se implementó una clase Python para cargar pares imagen-texto que retorna tuplas (PIL.Image, str) desde carpetas pareadas. La implementación se encuentra en:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/prepare_dataset.ipynb"><span style="font-family:Consolas;font-size:10pt">src/prepare_dataset.ipynb</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/paddle_ocr/dataset_manager.py"><span style="font-family:Consolas;font-size:10pt">src/paddle_ocr/dataset_manager.py</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/easyocr_service/dataset_manager.py"><span style="font-family:Consolas;font-size:10pt">src/easyocr_service/dataset_manager.py</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/doctr_service/dataset_manager.py"><span style="font-family:Consolas;font-size:10pt">src/doctr_service/dataset_manager.py</span></a></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Fase 2: Benchmark Comparativo</span></h3>
<h4><span lang="ES">Modelos Evaluados</span></h4>
<a name="_Ref_Tab14"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->14<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Modelos OCR evaluados en el benchmark inicial.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Modelo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Versión</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Configuración</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Idiomas: ['es', 'en']</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PP-OCRv5</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Modelos Mobile (limitación de VRAM)</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DocTR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">db_resnet50 + sar_resnet31</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Métricas de Evaluación</span></h4>
<p class="MsoNormal"><span lang="ES">Se utilizó la biblioteca <span style="font-family:Consolas;font-size:10pt">jiwer</span> para calcular CER y WER comparando el texto de referencia con la predicción del modelo OCR. La implementación se encuentra en:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/paddle_ocr/paddle_ocr_tuning_rest.py"><span style="font-family:Consolas;font-size:10pt">src/paddle_ocr/paddle_ocr_tuning_rest.py</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/easyocr_service/easyocr_tuning_rest.py"><span style="font-family:Consolas;font-size:10pt">src/easyocr_service/easyocr_tuning_rest.py</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/doctr_service/doctr_tuning_rest.py"><span style="font-family:Consolas;font-size:10pt">src/doctr_service/doctr_tuning_rest.py</span></a></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Fase 3: Espacio de Búsqueda</span></h3>
<h4><span lang="ES">Hiperparámetros Seleccionados</span></h4>
<a name="_Ref_Tab15"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->15<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Hiperparámetros seleccionados para optimización.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Parámetro</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tipo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Rango/Valores</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Descripción</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Booleano</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[True, False]</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Clasificación de orientación del documento</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Booleano</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[True, False]</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Corrección de deformación del documento</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">textline_orientation</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Booleano</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[True, False]</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Clasificación de orientación de línea de texto</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Continuo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[0.0, 0.7]</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Umbral de detección de píxeles de texto</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_box_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Continuo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[0.0, 0.7]</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Umbral de caja de detección</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Fijo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.0</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Coeficiente de expansión (fijado)</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_rec_score_thresh</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Continuo</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[0.0, 0.7]</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Umbral de confianza de reconocimiento</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Configuración de Ray Tune</span></h4>
<p class="MsoNormal"><span lang="ES">El espacio de búsqueda se definió utilizando <span style="font-family:Consolas;font-size:10pt">tune.choice()</span> para parámetros booleanos y <span style="font-family:Consolas;font-size:10pt">tune.uniform()</span> para parámetros continuos, con OptunaSearch como algoritmo de optimización configurado para minimizar CER en 64 trials. La implementación completa está disponible en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune/raytune_ocr.py"><span style="font-family:Consolas;font-size:10pt">src/raytune/raytune_ocr.py</span></a> (ver Anexo A).</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Fase 4: Ejecución de Optimización</span></h3>
<h4><span lang="ES">Arquitectura de Ejecución</span></h4>
<p class="MsoNormal"><span lang="ES">Se implementó una arquitectura basada en contenedores Docker para aislar los servicios OCR y facilitar la reproducibilidad (ver sección 4.2.3 para detalles de la arquitectura).</span></p>
<h4><span lang="ES">Ejecución con Docker Compose</span></h4>
<p class="MsoNormal"><span lang="ES">Los servicios se orquestan mediante Docker Compose:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.paddle.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.paddle.yml</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.doctr.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.doctr.yml</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.easyocr.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.easyocr.yml</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.yml</span></a></span></p>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word"># Iniciar servicio OCR
docker compose -f docker-compose.tuning.doctr.yml up -d doctr-gpu
# Ejecutar optimización (64 trials)
docker compose -f docker-compose.tuning.doctr.yml run raytune --service doctr --samples 64
# Detener servicios
docker compose -f docker-compose.tuning.doctr.yml down</pre>
</div>
<p class="MsoNormal"><span lang="ES">El servicio OCR expone una API REST que retorna métricas en formato JSON. Ejemplo real de un trial con mejor CER:</span></p>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word">{
"CER": 0.007884,
"WER": 0.077848,
"TIME_PER_PAGE": 0.5895
}</pre>
</div>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Fase 5: Validación</span></h3>
<h4><span lang="ES">Protocolo de Validación</span></h4>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Baseline</b>: Ejecución con configuración por defecto de PaddleOCR</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">2.<span style="font-size:7pt">   </span><b>Optimizado</b>: Ejecución con mejor configuración encontrada</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span><b>Comparación</b>: Evaluación sobre las 45 páginas del dataset completo</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">4.<span style="font-size:7pt">   </span><b>Métricas reportadas</b>: CER, WER, tiempo de procesamiento</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Entorno de Ejecución</span></h3>
<h4><span lang="ES">Hardware</span></h4>
<a name="_Ref_Tab16"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->16<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Especificaciones de hardware del entorno de desarrollo.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Componente</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Especificación</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CPU</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">AMD Ryzen 7 5800H</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RAM</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">16 GB DDR4</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">GPU</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">NVIDIA RTX 3060 Laptop (5.66 GB VRAM)</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Almacenamiento</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">SSD</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Software</span></h4>
<a name="_Ref_Tab17"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->17<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Software utilizado en el entorno de desarrollo.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Componente</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Versión</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddlePaddle</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">3.2.2</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">3.3.2</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Ray Tune</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">2.52.1</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optuna</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">4.7.0</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DocTR (python-doctr)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">&gt;= 0.8.0</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">&gt;= 1.7.0</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/paddle_ocr/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/paddle_ocr/requirements.txt</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/raytune/requirements.txt</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/doctr_service/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/doctr_service/requirements.txt</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/easyocr_service/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/easyocr_service/requirements.txt</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Justificación de Ejecución Local vs Cloud</span></h4>
<p class="MsoNormal"><span lang="ES">La decisión de ejecutar los experimentos en hardware local en lugar de utilizar servicios cloud se fundamenta en un análisis de costos y beneficios operativos.</span></p>
<a name="_Ref_Tab18"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->18<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Costos de GPU en plataformas cloud.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Plataforma</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">GPU</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Costo/Hora</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Costo Mensual</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">AWS EC2 g4dn.xlarge</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">NVIDIA T4 (16 GB)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">$0.526</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~$384</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Google Colab Pro</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">T4/P100</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~$1.30</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">$10 + CU extras</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Google Colab Pro+</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">T4/V100/A100</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~$1.30</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">$50 + CU extras</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Precios públicos de AWS y Google Cloud. Ver Anexo A, sección de fuentes de precios cloud (enero 2026).</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Para las tareas específicas de este proyecto, los costos estimados en cloud serían:</span></p>
<a name="_Ref_Tab19"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->19<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Análisis de costos del proyecto en plataformas cloud.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tarea</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tiempo GPU</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Costo AWS</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Costo Colab Pro</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Ajuste hiperparámetros (64×3 trials)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~3 horas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~$1.58</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~$3.90</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Evaluación completa (45 páginas)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~5 min</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~$0.04</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~$0.11</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Desarrollo y depuración (20 horas/mes)</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">20 horas</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~$10.52</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~$26.00</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia a partir de precios públicos. Ver Anexo A, sección de fuentes de precios cloud (enero 2026).</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Las ventajas de la ejecución local incluyen:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Costo cero de GPU</b>: La RTX 3060 ya está disponible en el equipo de desarrollo</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">2.<span style="font-size:7pt">   </span><b>Sin límites de tiempo</b>: AWS y Colab imponen timeouts de sesión que interrumpen experimentos largos</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span><b>Acceso instantáneo</b>: Sin tiempo de aprovisionamiento de instancias cloud</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">4.<span style="font-size:7pt">   </span><b>Almacenamiento local</b>: Dataset y resultados en disco sin costos de transferencia</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">5.<span style="font-size:7pt">   </span><b>Iteración rápida</b>: Reinicio inmediato de contenedores Docker para depuración</span></p>
<p class="MsoNormal"><span lang="ES">Para un proyecto de investigación con múltiples iteraciones de ajuste de hiperparámetros, la ejecución local reduce costos frente a servicios cloud. Este análisis se detalla en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics.md</span></a>.)</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Limitaciones Metodológicas</span></h3>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Tamaño del dataset</b>: El dataset contiene 45 páginas de documentos académicos UNIR. Resultados pueden no generalizar a otros formatos.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Subconjunto de optimización</b>: El ajuste de hiperparámetros se realizó sobre 5 páginas (páginas 5-10), lo que contribuyó al sobreajuste observado en la validación del dataset completo.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Texto de referencia imperfecto</b>: El texto de referencia extraído de PDF puede contener errores en documentos con diseños complejos.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Parámetro fijo</b>: <span style="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span> quedó fijado en 0.0 durante todo el experimento por decisión de diseño inicial.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Síntesis del capítulo</span></h2>
<p class="MsoNormal"><span lang="ES">Los objetivos y la metodología definidos en este capítulo establecen el marco para la experimentación. El objetivo general, alcanzar un CER inferior al 2% mediante optimización de hiperparámetros, se descompone en cinco objetivos específicos que abarcan desde la comparativa inicial de soluciones hasta la validación final de la configuración optimizada.</span></p>
<p class="MsoNormal"><span lang="ES">La metodología experimental en cinco fases garantiza un proceso sistemático y reproducible: preparación de un dataset de 45 páginas, benchmark comparativo de tres motores OCR, definición del espacio de búsqueda, ejecución de 64 trials con Ray Tune y Optuna, y validación de la configuración resultante. Las limitaciones metodológicas, como el tamaño del dataset, el subconjunto de optimización reducido y el texto de referencia automático, se reconocen explícitamente para contextualizar la interpretación de resultados.</span></p>
<p class="MsoNormal"><span lang="ES">El capítulo siguiente pone en práctica esta metodología, presentando el desarrollo experimental completo con sus resultados y análisis.</span></p><p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt;page-break-after:
avoid;mso-outline-level:1;mso-list:l22 level1 lfo18"><span style="mso-bookmark:
_Toc14106979"><span style="mso-bookmark:_Toc437515557"><a name="_Toc160619817"></a><a name="_Toc100036217"><span style="mso-bookmark:_Toc160619817"><?if !supportLists?><span lang="ES" style='font-size:18.0pt;mso-bidi-font-size:16.0pt;line-height:150%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-fareast-font-family:"Calibri Light";mso-fareast-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-theme-font:major-latin;color:#0098CD;
mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'><span style="mso-list:Ignore">4.<span style='font:7.0pt "Times New Roman"'>   </span></span></span><?endif?><span lang="ES" style='font-size:18.0pt;mso-bidi-font-size:16.0pt;line-height:150%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:"Times New Roman";
color:#0098CD;text-transform:uppercase;mso-font-kerning:16.0pt;mso-bidi-font-weight:
bold'>D</span></span></a></span></span><span style="mso-bookmark:_Toc14106979"><span style="mso-bookmark:_Toc437515557"><span style="mso-bookmark:_Toc100036217"><span style="mso-bookmark:_Toc160619817"><span lang="ES" style='font-size:18.0pt;
mso-bidi-font-size:16.0pt;line-height:150%;font-family:"Calibri Light",sans-serif;
mso-ascii-theme-font:major-latin;mso-hansi-theme-font:major-latin;mso-bidi-font-family:
"Times New Roman";color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:
bold'>es</span></span></span></span></span><span style="mso-bookmark:_Toc14106979"><span style="mso-bookmark:_Toc437515557"><span style="mso-bookmark:_Toc160619817"><span lang="ES" style='font-size:18.0pt;mso-bidi-font-size:16.0pt;line-height:150%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:"Times New Roman";
color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'>arrollo
específico de la contribución</span></span></span></span><span style="mso-bookmark:_Toc14106979"><span style="mso-bookmark:_Toc437515557"><span lang="ES" style='font-size:18.0pt;mso-bidi-font-size:16.0pt;line-height:150%;
font-family:"Calibri Light",sans-serif;mso-ascii-theme-font:major-latin;
mso-hansi-theme-font:major-latin;mso-bidi-font-family:"Times New Roman";
color:#0098CD;mso-font-kerning:16.0pt;mso-bidi-font-weight:bold'><o:p></o:p></span></span></span></p><p class="MsoNormal"><span lang="ES">El presente capítulo constituye el núcleo técnico de este trabajo fin de máster. Siguiendo la estructura de "Comparativa de soluciones" establecida por las instrucciones de UNIR, se desarrollan tres fases interrelacionadas. Estas fases son tres: planteamiento y ejecución del benchmark comparativo, optimización de hiperparámetros mediante Ray Tune, y análisis e interpretación de los resultados.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Planteamiento de la comparativa</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Introducción</span></h3>
<p class="MsoNormal"><span lang="ES">Antes de abordar la optimización de hiperparámetros, era necesario seleccionar el motor OCR que serviría como base para la experimentación. Para ello, se realizó un estudio comparativo entre tres soluciones de código abierto representativas del estado del arte: EasyOCR, PaddleOCR y DocTR. Los experimentos, documentados en los informes de métricas y en los CSV de resultados del repositorio, permitieron identificar el modelo más prometedor para la fase de optimización posterior.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Identificación del Problema</span></h3>
<p class="MsoNormal"><span lang="ES">El reconocimiento óptico de caracteres en documentos académicos en español presenta desafíos específicos que la literatura no ha abordado en profundidad. A diferencia de los benchmarks estándar en inglés, los documentos académicos hispanohablantes combinan características ortográficas propias, como acentos, eñes, diéresis y signos de puntuación invertidos, con una estructura sencilla basada en índice y encabezados.</span></p>
<p class="MsoNormal"><span lang="ES">Los documentos académicos típicos incluyen texto corrido con índice, listas numeradas, encabezados multinivel y notas al pie, lo que complica la tarea de ordenación del texto reconocido. A esto se suma el uso de tipografía profesional con múltiples fuentes, tamaños y estilos (negrita, cursiva), que puede confundir a los modelos de reconocimiento. Aunque los PDFs digitales suelen tener alta calidad, pueden contener artefactos de compresión que degradan la legibilidad de caracteres pequeños o de bajo contraste.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Alternativas Evaluadas</span></h3>
<p class="MsoNormal"><span lang="ES">Se seleccionaron tres soluciones OCR de código abierto representativas del estado del arte:</span></p>
<a name="_Ref_Tab20"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->20<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Soluciones OCR evaluadas en el benchmark comparativo.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Solución</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Desarrollador</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Versión</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Justificación de selección</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Jaided AI</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Última estable</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Popularidad, facilidad de uso</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Baidu</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PP-OCRv5</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Estado del arte industrial</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DocTR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Mindee</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Última estable</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Orientación académica</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Imágenes Docker disponibles en el registro del proyecto:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">PaddleOCR: <a href="https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/paddle-ocr-gpu</span></a>, <a href="https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-cpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/paddle-ocr-cpu</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">EasyOCR: <a href="https://seryus.ddns.net/unir/-/packages/container/easyocr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/easyocr-gpu</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">DocTR: <a href="https://seryus.ddns.net/unir/-/packages/container/doctr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/doctr-gpu</span></a></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Criterios de Éxito</span></h3>
<p class="MsoNormal"><span lang="ES">Los criterios establecidos para evaluar las soluciones fueron:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Precisión (CER &lt; 5%)</b>: Error de caracteres aceptable para documentos académicos</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">2.<span style="font-size:7pt">   </span><b>Configurabilidad</b>: Disponibilidad de hiperparámetros ajustables</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span><b>Soporte para español</b>: Modelos preentrenados que incluyan el idioma</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">4.<span style="font-size:7pt">   </span><b>Documentación</b>: Calidad de la documentación técnica</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">5.<span style="font-size:7pt">   </span><b>Mantenimiento activo</b>: Actualizaciones recientes y comunidad activa</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Configuración del Experimento</span></h3>
<h4><span lang="ES">Dataset de Evaluación</span></h4>
<p class="MsoNormal"><span lang="ES">Se utilizó el documento "Instrucciones para la redacción y elaboración del TFE" del Máster Universitario en Inteligencia Artificial de UNIR, ubicado en la carpeta <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/instructions/"><span style="font-family:Consolas;font-size:10pt">instructions/</span></a>.</span></p>
<a name="_Ref_Tab21"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->21<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Características del dataset de evaluación inicial.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Característica</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Valor</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Documento fuente</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Instrucciones TFE UNIR</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Número de páginas evaluadas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">5 (benchmark inicial)</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Formato</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PDF digital (no escaneado)</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Idioma principal</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Español</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Resolución de conversión</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">300 DPI</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Formato de imagen</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PNG</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Proceso de Conversión</span></h4>
<p class="MsoNormal"><span lang="ES">La conversión del PDF a imágenes se realizó mediante PyMuPDF (fitz) a 300 DPI, resolución estándar para OCR que proporciona suficiente detalle para caracteres pequeños sin generar archivos excesivamente grandes. La implementación está disponible en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/prepare_dataset.ipynb"><span style="font-family:Consolas;font-size:10pt">src/prepare_dataset.ipynb</span></a>.</span></p>
<h4><span lang="ES">Extracción del Ground Truth</span></h4>
<p class="MsoNormal"><span lang="ES">El texto de referencia se extrajo directamente del PDF mediante PyMuPDF, preservando la estructura de líneas del documento original. Esta aproximación puede introducir errores en el orden de lectura cuando hay secciones con encabezados, listas o saltos de línea, por lo que se documenta junto al pipeline de preparación en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/prepare_dataset.ipynb"><span style="font-family:Consolas;font-size:10pt">src/prepare_dataset.ipynb</span></a>. Para la comparación entre motores, las salidas se guardan en <span style="font-family:Consolas;font-size:10pt">debugset/</span> al activar <span style="font-family:Consolas;font-size:10pt">save_output=True</span>, y el flujo de trabajo se describe en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/README.md"><span style="font-family:Consolas;font-size:10pt">src/README.md</span></a> y en los README de cada servicio: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/paddle_ocr/README.md"><span style="font-family:Consolas;font-size:10pt">src/paddle_ocr/README.md</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/easyocr_service/README.md"><span style="font-family:Consolas;font-size:10pt">src/easyocr_service/README.md</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/doctr_service/README.md"><span style="font-family:Consolas;font-size:10pt">src/doctr_service/README.md</span></a>.</span></p>
<h4><span lang="ES">Configuración de los Modelos</span></h4>
<p class="MsoNormal"><span lang="ES">La configuración de cada modelo se detalla en los README de cada servicio y sus ficheros de dependencias:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>EasyOCR</b>: Configurado con soporte para español e inglés, permitiendo reconocer palabras en ambos idiomas que puedan aparecer en documentos académicos (referencias, términos técnicos).</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>PaddleOCR (PP-OCRv5)</b>: Se utilizaron los modelos Mobile, adecuados para la VRAM disponible. Los modelos Server se probaron y produjeron OOM en este hardware. La versión utilizada fue PaddleOCR 3.3.2.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>DocTR</b>: Se seleccionaron las arquitecturas db_resnet50 para detección y sar_resnet31 para reconocimiento, representando una configuración de alta precisión.</span></p>
<h4><span lang="ES">Métricas de Evaluación</span></h4>
<p class="MsoNormal"><span lang="ES">Se utilizó la biblioteca <span style="font-family:Consolas;font-size:10pt">jiwer</span> para calcular CER y WER de manera estandarizada. La normalización a minúsculas y eliminación de espacios extremos asegura una comparación justa que no penaliza diferencias de capitalización. La implementación está disponible en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/paddle_ocr/paddle_ocr_tuning_rest.py"><span style="font-family:Consolas;font-size:10pt">src/paddle_ocr/paddle_ocr_tuning_rest.py</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/easyocr_service/easyocr_tuning_rest.py"><span style="font-family:Consolas;font-size:10pt">src/easyocr_service/easyocr_tuning_rest.py</span></a> y <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/doctr_service/doctr_tuning_rest.py"><span style="font-family:Consolas;font-size:10pt">src/doctr_service/doctr_tuning_rest.py</span></a>.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Resultados del Benchmark</span></h3>
<h4><span lang="ES">Resultados de PaddleOCR (Configuración Baseline)</span></h4>
<p class="MsoNormal"><span lang="ES">Durante el benchmark inicial se evaluó PaddleOCR con configuración por defecto en un subconjunto del dataset. Los resultados preliminares mostraron variabilidad significativa entre páginas, en función de los cambios de formato y de la estructura del texto.</span></p>
<a name="_Ref_Tab22"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->22<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Variabilidad del error por tipo de contenido.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tipo de contenido</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Nivel de error</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Observaciones</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Texto corrido</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Bajo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Mejor rendimiento</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Texto con listas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Rendimiento intermedio</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Índice y encabezados</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Orden de lectura sensible</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Encabezados + notas</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Variación tipográfica</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia a partir del benchmark.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES"><b>Observaciones del benchmark inicial:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span>Las páginas con más cambios de formato y listados presentaron mayor error debido a la dificultad de ordenar correctamente las líneas de texto.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span>La página con texto corrido continuo obtuvo el mejor resultado, demostrando la capacidad del modelo para texto estándar.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span>El promedio general se situó en un rango medio de error, con margen de mejora.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span>Los errores más frecuentes fueron: confusión de acentos, caracteres duplicados, y errores en signos de puntuación.</span></p>
<h4><span lang="ES">Comparativa de Modelos</span></h4>
<p class="MsoNormal"><span lang="ES">Los tres modelos evaluados representan diferentes paradigmas de OCR:</span></p>
<a name="_Ref_Tab23"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->23<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Comparativa de arquitecturas OCR evaluadas.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Modelo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tipo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Componentes</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Fortalezas Clave</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>EasyOCR</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">End-to-end (det + rec)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CRAFT + CRNN/Transformer</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Ligero, fácil de usar, multilingüe</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>PaddleOCR</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">End-to-end (det + rec + cls)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DB + SVTR/CRNN</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Soporte multilingüe robusto, pipeline configurable</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>DocTR</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">End-to-end (det + rec)</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DB/LinkNet + CRNN/SAR/ViTSTR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Orientado a investigación, API limpia</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Documentación oficial de cada herramienta (JaidedAI, 2020; PaddlePaddle, 2024; Mindee, 2021).</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Análisis Cualitativo de Errores</span></h4>
<p class="MsoNormal"><span lang="ES">Un análisis cualitativo de los errores producidos reveló patrones específicos:</span></p>
<p class="MsoNormal"><span lang="ES"><b>Errores de acentuación:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">información</span><span style="font-family:Consolas;font-size:10pt">informacion</span> (pérdida de acento)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">más</span><span style="font-family:Consolas;font-size:10pt">mas</span> (cambio de significado)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">él</span><span style="font-family:Consolas;font-size:10pt">el</span> (cambio de significado)</span></p>
<p class="MsoNormal"><span lang="ES"><b>Errores de caracteres especiales:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">año</span><span style="font-family:Consolas;font-size:10pt">ano</span> (pérdida de eñe)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">¿Cómo</span><span style="font-family:Consolas;font-size:10pt">Como</span> (pérdida de signos invertidos)</span></p>
<p class="MsoNormal"><span lang="ES"><b>Errores de duplicación:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">titulación</span><span style="font-family:Consolas;font-size:10pt">titulacióon</span> (carácter duplicado)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">documento</span><span style="font-family:Consolas;font-size:10pt">doccumento</span> (consonante duplicada)</span></p>
<p class="MsoNormal"><span lang="ES"><b>Ejemplo de predicción de PaddleOCR para una página:</b></span></p>
<p class="MsoQuote"><i><span lang="ES">"Escribe siempre al menos un párrafo de introducción en cada capítulo o apartado, explicando de qué vas a tratar en esa sección. Evita que aparezcan dos encabezados de nivel consecutivos sin ningún texto entre medias. [...] En esta titulacióon se cita de acuerdo con la normativa Apa."</span></i></p>
<p class="MsoNormal"><span lang="ES"><b>Errores identificados en este ejemplo:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">titulacióon</span> en lugar de <span style="font-family:Consolas;font-size:10pt">titulación</span> (carácter duplicado)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">Apa</span> en lugar de <span style="font-family:Consolas;font-size:10pt">APA</span> (capitalización)</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Justificación de la Selección de PaddleOCR</span></h3>
<h4><span lang="ES">Criterios de Selección</span></h4>
<p class="MsoNormal"><span lang="ES">La selección de PaddleOCR para la fase de optimización se basó en los siguientes criterios:</span></p>
<a name="_Ref_Tab24"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->24<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Evaluación de criterios de selección (cualitativa).</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Criterio</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">EasyOCR</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">PaddleOCR</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">DocTR</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CER benchmark</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Mejor</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Configurabilidad</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Baja</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Alta</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Media</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Soporte español</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Sí (dedicado)</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Limitado</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Documentación</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Media</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Alta</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Alta</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Mantenimiento</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Alto</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia a partir del benchmark y la documentación de cada herramienta.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Hiperparámetros Disponibles en PaddleOCR</span></h4>
<p class="MsoNormal"><span lang="ES">PaddleOCR expone múltiples hiperparámetros ajustables, clasificados por etapa del pipeline:</span></p>
<p class="MsoNormal"><span lang="ES"><b>Detección:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_thresh</span>: Umbral de probabilidad para píxeles de texto</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_box_thresh</span>: Umbral de confianza para cajas detectadas</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span>: Factor de expansión de cajas</span></p>
<p class="MsoNormal"><span lang="ES"><b>Reconocimiento:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_rec_score_thresh</span>: Umbral de confianza para resultados</span></p>
<p class="MsoNormal"><span lang="ES"><b>Preprocesamiento:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_textline_orientation</span>: Clasificación de orientación de línea</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span>: Clasificación de orientación de documento</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span>: Corrección de deformación</span></p>
<p class="MsoNormal"><span lang="ES">Esta riqueza de configuración permite explorar sistemáticamente el espacio de hiperparámetros mediante técnicas de optimización automática.</span></p>
<h4><span lang="ES">Decisión Final</span></h4>
<p class="MsoNormal"><span lang="ES"><b>Se selecciona PaddleOCR (PP-OCRv5)</b> para la fase de optimización debido a:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Resultados iniciales prometedores</b>: Rendimiento base competitivo con margen de mejora</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">2.<span style="font-size:7pt">   </span><b>Alta configurabilidad</b>: Múltiples hiperparámetros ajustables en tiempo de inferencia</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span><b>Pipeline modular</b>: Permite aislar el impacto de cada componente</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">4.<span style="font-size:7pt">   </span><b>Soporte activo para español</b>: Modelos específicos y actualizaciones frecuentes</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">5.<span style="font-size:7pt">   </span><b>Documentación técnica</b>: Descripción detallada de cada parámetro</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Limitaciones del Benchmark</span></h3>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Tamaño reducido</b>: Solo 5 páginas evaluadas en el benchmark comparativo inicial. Esto limita la generalización de las conclusiones.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Único tipo de documento</b>: Documentos académicos de UNIR únicamente. Otros tipos de documentos (facturas, formularios, contratos) podrían presentar resultados diferentes.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Ground truth automático</b>: El texto de referencia se extrajo programáticamente del PDF, lo cual puede introducir errores en el orden de lectura cuando hay secciones con encabezados y saltos de línea.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Referencia CPU separada</b>: Los tiempos en CPU se midieron en un experimento independiente y solo se usan como comparación de rendimiento frente a GPU.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Síntesis del Benchmark</span></h3>
<p class="MsoNormal"><span lang="ES">El benchmark comparativo ha permitido identificar PaddleOCR como la solución más prometedora para la fase de optimización, gracias a su combinación de rendimiento base competitivo, alta configurabilidad del pipeline y documentación técnica completa. Sin embargo, el análisis también reveló limitaciones importantes: el tamaño reducido del benchmark (5 páginas), la restricción a un único tipo de documento, y la extracción automática del ground truth que puede introducir errores en el orden de lectura cuando hay secciones con encabezados y saltos de línea. Estas limitaciones se tendrán en cuenta al interpretar los resultados de la fase de optimización.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Desarrollo de la comparativa: Optimización de hiperparámetros</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Introducción</span></h3>
<p class="MsoNormal"><span lang="ES">Una vez seleccionado PaddleOCR como motor base, el siguiente paso fue explorar sistemáticamente su espacio de configuración para identificar los hiperparámetros que maximizan el rendimiento en documentos académicos en español. Para ello se empleó Ray Tune con el algoritmo de búsqueda Optuna, una combinación que permite explorar eficientemente espacios de búsqueda mixtos (parámetros continuos y categóricos). Los experimentos se implementaron en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/run_tuning.py"><span style="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a> con apoyo de la librería <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune_ocr.py"><span style="font-family:Consolas;font-size:10pt">src/raytune_ocr.py</span></a>, almacenándose los resultados en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results"><span style="font-family:Consolas;font-size:10pt">src/results</span></a>. Esta aproximación ofrece ventajas significativas frente al fine-tuning tradicional: no requiere datasets de entrenamiento etiquetados, no modifica los pesos del modelo preentrenado, y puede ejecutarse con hardware de consumo cuando se dispone de aceleración GPU.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Configuración del Experimento</span></h3>
<h4><span lang="ES">Entorno de Ejecución</span></h4>
<p class="MsoNormal"><span lang="ES">El experimento se ejecutó en el siguiente entorno:</span></p>
<a name="_Ref_Tab25"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->25<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Entorno de ejecución del experimento.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Componente</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Versión/Especificación</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Sistema operativo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Ubuntu 24.04.3 LTS</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Python</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">3.12.3</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddlePaddle</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">3.2.2</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">3.3.2</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Ray</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">2.52.1</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optuna</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">4.7.0</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CPU</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">AMD Ryzen 7 5800H</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RAM</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">16 GB DDR4</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">GPU</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">NVIDIA RTX 3060 Laptop (5.66 GB VRAM)</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/paddle_ocr/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/paddle_ocr/requirements.txt</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/raytune/requirements.txt</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Arquitectura de Ejecución</span></h4>
<p class="MsoNormal"><span lang="ES">La arquitectura basada en contenedores Docker es fundamental para este proyecto debido a los conflictos de dependencias inherentes entre los diferentes componentes:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Conflictos entre motores OCR</b>: PaddleOCR, DocTR y EasyOCR tienen dependencias mutuamente incompatibles (diferentes versiones de PyTorch/PaddlePaddle, OpenCV, etc.)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Incompatibilidades CUDA/cuDNN</b>: Cada motor OCR requiere versiones específicas de CUDA y cuDNN que no pueden coexistir en un mismo entorno virtual</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Aislamiento de Ray Tune</b>: Ray Tune tiene sus propias dependencias que pueden entrar en conflicto con las librerías de inferencia OCR</span></p>
<p class="MsoNormal"><span lang="ES">Esta arquitectura containerizada permite ejecutar cada componente en su entorno aislado óptimo, comunicándose via API REST:</span></p>
<a name="_Ref_Fig5"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->5<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Arquitectura de ejecución con Docker Compose</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Arquitectura de ejecución con Docker Compose" height="327" src="figures/figura_5.png" style="width:424.5pt;height:245.25pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">La arquitectura containerizada <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.paddle.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.paddle.yml)</span></a>)))), <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.doctr.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.doctr.yml</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.easyocr.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.easyocr.yml</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.yml</span></a>ofrece:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span>Aislamiento de dependencias entre Ray Tune y los motores OCR</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">2.<span style="font-size:7pt">   </span>Health checks automáticos para asegurar disponibilidad del servicio</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span>Comunicación via API REST (endpoints <span style="font-family:Consolas;font-size:10pt">/health</span> y <span style="font-family:Consolas;font-size:10pt">/evaluate</span>)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">4.<span style="font-size:7pt">   </span>Soporte para GPU mediante nvidia-docker</span></p>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word"># Iniciar servicio OCR con GPU
docker compose -f docker-compose.tuning.doctr.yml up -d doctr-gpu
# Ejecutar optimización (64 trials)
docker compose -f docker-compose.tuning.doctr.yml run raytune --service doctr --samples 64
# Detener servicios
docker compose -f docker-compose.tuning.doctr.yml down</pre>
</div>
<p class="MsoNormal"><span lang="ES">Respuesta del servicio OCR:</span></p>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word">{
"CER": 0.0149,
"WER": 0.0762,
"TIME": 15.8,
"PAGES": 5,
"TIME_PER_PAGE": 3.16
}</pre>
</div>
<h4><span lang="ES">Infraestructura Docker</span></h4>
<p class="MsoNormal"><span lang="ES">La infraestructura del proyecto se basa en contenedores Docker para garantizar reproducibilidad y aislamiento de dependencias. Se generaron seis imágenes Docker, cada una optimizada para su propósito específico.</span></p>
<a name="_Ref_Tab26"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->26<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Imágenes Docker generadas para el proyecto.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Imagen</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Propósito</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Base</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Puerto</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/paddle-ocr-gpu</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR con aceleración GPU</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">nvidia/cuda:12.4.1-cudnn-runtime</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8002</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-cpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/paddle-ocr-cpu</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR para entornos sin GPU</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">python:3.11-slim</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8002</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/-/packages/container/easyocr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/easyocr-gpu</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR con aceleración GPU</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">nvidia/cuda:13.0.2-cudnn-runtime</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8002*</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/-/packages/container/doctr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/doctr-gpu</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DocTR con aceleración GPU</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">nvidia/cuda:13.0.2-cudnn-runtime</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8003</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/-/packages/container/raytune/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/raytune</span></a></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Orquestador Ray Tune</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">python:3.12-slim</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia. Dockerfiles disponibles en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/paddle_ocr"><span style="font-family:Consolas;font-size:10pt">src/paddle_ocr</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/easyocr_service"><span style="font-family:Consolas;font-size:10pt">src/easyocr_service</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/doctr_service"><span style="font-family:Consolas;font-size:10pt">src/doctr_service</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune"><span style="font-family:Consolas;font-size:10pt">src/raytune</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Arquitectura de Microservicios</span></h4>
<a name="_Ref_Fig6"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->6<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Arquitectura de microservicios para optimización OCR</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Arquitectura de microservicios para optimización OCR" height="313" src="figures/figura_6.png" style="width:424.5pt;height:234.75pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Estrategia de Build Multi-Stage</span></h4>
<p class="MsoNormal"><span lang="ES">Los Dockerfiles utilizan una estrategia de build multi-stage para optimizar tiempos de construcción y tamaño de imágenes:</span></p>
<a name="_Ref_Fig7"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->7<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Estrategia de build multi-stage</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Estrategia de build multi-stage" height="438" src="figures/figura_7.png" style="width:424.5pt;height:328.5pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES"><b>Ventajas de esta estrategia:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Caché de dependencias</b>: La etapa base (CUDA + dependencias) se cachea y reutiliza</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">2.<span style="font-size:7pt">   </span><b>Builds rápidos</b>: Los cambios de código solo reconstruyen la etapa de deploy</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span><b>Imágenes optimizadas</b>: Solo se incluyen los archivos necesarios para ejecución</span></p>
<h4><span lang="ES">Docker Compose Files</span></h4>
<p class="MsoNormal"><span lang="ES">El proyecto incluye múltiples archivos Docker Compose para diferentes escenarios de uso:</span></p>
<a name="_Ref_Tab27"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->27<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Archivos Docker Compose del proyecto.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Archivo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Propósito</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Servicios</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.yml</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización principal</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + PaddleOCR + DocTR</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.easyocr.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.easyocr.yml</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización EasyOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + EasyOCR</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.paddle.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.paddle.yml</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización PaddleOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + PaddleOCR</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.doctr.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.doctr.yml</span></a></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización DocTR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RayTune + DocTR</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.yml</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.easyocr.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.easyocr.yml</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.paddle.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.paddle.yml</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.doctr.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.doctr.yml</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoQuote"><i><span lang="ES"><b>Nota:</b> EasyOCR y PaddleOCR utilizan el mismo puerto (8002). Debido a limitaciones de recursos GPU (VRAM insuficiente para ejecutar múltiples modelos OCR simultáneamente), solo se ejecuta un servicio a la vez durante los experimentos. Por esta razón, EasyOCR tiene su propio archivo Docker Compose separado.</span></i></p>
<h4><span lang="ES">Gestión de Volúmenes</span></h4>
<p class="MsoNormal"><span lang="ES">Se utilizan volúmenes Docker nombrados para persistir los modelos descargados entre ejecuciones:</span></p>
<a name="_Ref_Tab28"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->28<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Volúmenes Docker para caché de modelos.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Volumen</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Servicio</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Contenido</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">paddlex-model-cache</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Modelos PP-OCRv5</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">easyocr-model-cache</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Modelos CRAFT + CRNN</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">doctr-model-cache</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DocTR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Modelos db_resnet50 + crnn_vgg16_bn</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.yml</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.easyocr.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.easyocr.yml</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.paddle.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.paddle.yml</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/docker-compose.tuning.doctr.yml"><span style="font-family:Consolas;font-size:10pt">src/docker-compose.tuning.doctr.yml</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Health Checks y Monitorización</span></h4>
<p class="MsoNormal"><span lang="ES">Todos los servicios implementan health checks para garantizar disponibilidad antes de iniciar la optimización:</span></p>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word">healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s # PaddleOCR: 60s, EasyOCR: 120s, DocTR: 180s</pre>
</div>
<p class="MsoNormal"><span lang="ES">Los tiempos de <span style="font-family:Consolas;font-size:10pt">start_period</span> varían según el servicio debido al tiempo de carga de modelos:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>PaddleOCR</b>: 60 segundos (modelos más ligeros)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>EasyOCR</b>: 120 segundos (carga de modelos CRAFT)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>DocTR</b>: 180 segundos (modelos ResNet más pesados)</span></p>
<h4><span lang="ES">Flujo de Ejecución Completo</span></h4>
<a name="_Ref_Fig8"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->8<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Flujo de ejecución de optimización con Ray Tune</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Flujo de ejecución de optimización con Ray Tune" height="468" src="figures/figura_8.png" style="width:424.5pt;height:351.0pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Reproducibilidad</span></h4>
<p class="MsoNormal"><span lang="ES">Para reproducir los experimentos:</span></p>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word"># 1. Clonar repositorio
git clone https://seryus.ddns.net/unir/MastersThesis.git
cd MastersThesis/src
# 2. Iniciar servicio OCR (requiere nvidia-docker)
docker compose -f docker-compose.tuning.paddle.yml up -d paddle-ocr-gpu
# 3. Verificar health check
curl http://localhost:8002/health
# 4. Ejecutar optimización (64 trials)
docker compose -f docker-compose.tuning.paddle.yml run raytune \
--service paddle --samples 64
# 5. Resultados en src/results/
ls -la results/raytune_paddle_results_*.csv
# 6. Limpiar
docker compose -f docker-compose.tuning.paddle.yml down</pre>
</div>
<p class="MsoNormal"><span lang="ES">Los resultados de los experimentos están disponibles en:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_easyocr_results_20260119_120204.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_easyocr_results_20260119_120204.csv</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_doctr_results_20260119_121445.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_doctr_results_20260119_121445.csv</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune_paddle_subproc_results_20251207_192320.csv"><span style="font-family:Consolas;font-size:10pt">src/raytune_paddle_subproc_results_20251207_192320.csv</span></a></span></p>
<h4><span lang="ES">Dataset Extendido</span></h4>
<p class="MsoNormal"><span lang="ES">Para la fase de optimización se extendió el dataset:</span></p>
<a name="_Ref_Tab29"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->29<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Características del dataset de optimización.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Característica</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Valor</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Páginas del dataset completo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">45</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Páginas por trial</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">5 (páginas 5-10)</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Estructura</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Carpetas <span style="font-family:Consolas;font-size:10pt">img/</span> y <span style="font-family:Consolas;font-size:10pt">txt/</span> pareadas</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Resolución</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">300 DPI</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Formato imagen</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PNG</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics.md</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/prepare_dataset.ipynb"><span style="font-family:Consolas;font-size:10pt">src/prepare_dataset.ipynb</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">La clase <span style="font-family:Consolas;font-size:10pt">ImageTextDataset</span> gestiona la carga de pares imagen-texto desde la estructura de carpetas pareadas. La implementación está disponible en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/paddle_ocr/dataset_manager.py"><span style="font-family:Consolas;font-size:10pt">src/paddle_ocr/dataset_manager.py</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/easyocr_service/dataset_manager.py"><span style="font-family:Consolas;font-size:10pt">src/easyocr_service/dataset_manager.py</span></a> y <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/doctr_service/dataset_manager.py"><span style="font-family:Consolas;font-size:10pt">src/doctr_service/dataset_manager.py</span></a>.</span></p>
<h4><span lang="ES">Espacio de Búsqueda</span></h4>
<p class="MsoNormal"><span lang="ES">El espacio de búsqueda se definió considerando los hiperparámetros más relevantes identificados en la documentación de PaddleOCR, utilizando <span style="font-family:Consolas;font-size:10pt">tune.choice()</span> para parámetros booleanos y <span style="font-family:Consolas;font-size:10pt">tune.uniform()</span> para umbrales continuos. La implementación está disponible en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune/raytune_ocr.py"><span style="font-family:Consolas;font-size:10pt">src/raytune/raytune_ocr.py</span></a> (ver Anexo A).</span></p>
<a name="_Ref_Tab30"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->30<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Descripción detallada del espacio de búsqueda.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Parámetro</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tipo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Rango</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Descripción</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Booleano</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">{True, False}</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Clasificación de orientación del documento completo</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Booleano</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">{True, False}</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Corrección de deformación/curvatura</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">textline_orientation</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Booleano</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">{True, False}</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Clasificación de orientación por línea de texto</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Continuo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[0.0, 0.7]</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Umbral de probabilidad para píxeles de texto</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_box_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Continuo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[0.0, 0.7]</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Umbral de confianza para cajas detectadas</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Fijo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.0</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Coeficiente de expansión (no explorado)</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_rec_score_thresh</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Continuo</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">[0.0, 0.7]</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Umbral de confianza de reconocimiento</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Documentación de PaddleOCR.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES"><b>Justificación del espacio:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Rango [0.0, 0.7] para umbrales</b>: Se evitan valores extremos (&gt;0.7) que podrían filtrar demasiado texto válido, y se incluye 0.0 para evaluar el impacto de desactivar el filtrado.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b><span style="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span> fijo</b>: Por decisión de diseño inicial, este parámetro se mantuvo constante para reducir la dimensionalidad del espacio de búsqueda.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Parámetros booleanos completos</b>: Los tres parámetros de preprocesamiento se exploran completamente para identificar cuáles son necesarios para documentos digitales.</span></p>
<h4><span lang="ES">Configuración de Ray Tune</span></h4>
<p class="MsoNormal"><span lang="ES">Se configuró Ray Tune con OptunaSearch como algoritmo de búsqueda, optimizando CER en 64 trials con 2 ejecuciones concurrentes. La implementación está disponible en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune/raytune_ocr.py"><span style="font-family:Consolas;font-size:10pt">src/raytune/raytune_ocr.py</span></a> (ver Anexo A).</span></p>
<a name="_Ref_Tab31"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->31<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Parámetros de configuración de Ray Tune.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Parámetro</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Valor</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Justificación</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Métrica objetivo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CER</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Métrica estándar para OCR</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Modo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">min</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Minimizar tasa de error</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Algoritmo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">OptunaSearch (TPE)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Eficiente para espacios mixtos</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Número de trials</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">64</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Balance entre exploración y tiempo</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Trials concurrentes</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">2</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Limitado por memoria disponible</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune/raytune_ocr.py"><span style="font-family:Consolas;font-size:10pt">src/raytune/raytune_ocr.py</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Elección de 64 trials:</span></p>
<p class="MsoNormal"><span lang="ES">El número de trials se eligió buscando un equilibrio entre exploración del espacio de búsqueda y tiempo total de ejecución.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Resultados de la Optimización</span></h3>
<h4><span lang="ES">Ejecución del Experimento</span></h4>
<p class="MsoNormal"><span lang="ES">El experimento se ejecutó exitosamente con los siguientes resultados globales:</span></p>
<a name="_Ref_Tab32"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->32<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Resumen de la ejecución del experimento (referencia CPU).</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Métrica</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Valor</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Trials completados</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">64/64</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Trials fallidos</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Tiempo total (CPU)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">6.2 horas</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Tiempo medio por trial (CPU)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">347.6 segundos</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Páginas procesadas</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">320 (64 trials × 5 páginas)</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune_paddle_subproc_results_20251207_192320.csv"><span style="font-family:Consolas;font-size:10pt">src/raytune_paddle_subproc_results_20251207_192320.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Estadísticas Descriptivas</span></h4>
<p class="MsoNormal"><span lang="ES">Del archivo CSV de resultados <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>:</span></p>
<a name="_Ref_Tab33"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->33<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Estadísticas descriptivas de los 64 trials.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Estadística</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">WER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tiempo/Página (s)</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>count</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">64</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">64</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">64</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>mean</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">2.30%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">9.25%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.84</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>std</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">2.20%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">1.78%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.53</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>min</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.79%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">6.80%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.56</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>50%</b> (mediana)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.87%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8.39%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.59</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>max</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">7.30%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">13.20%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">2.22</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Observaciones:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Baja varianza en CER</b>: La desviación estándar (2.20%) es similar a la media (2.30%), indicando una distribución relativamente consistente sin valores extremos catastróficos.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Mediana vs Media</b>: La mediana del CER (0.87%) es menor que la media (2.30%), confirmando una distribución ligeramente sesgada hacia valores bajos.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Velocidad GPU</b>: El tiempo de ejecución promedio es de 0.84 s/página, lo que representa una aceleración significativa respecto a la ejecución en CPU (~69 s/página, 82x más rápido).</span></p>
<h4><span lang="ES">Distribución de Resultados</span></h4>
<a name="_Ref_Tab34"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->34<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Distribución de trials por rango de CER.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Rango CER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Número de trials</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Porcentaje</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">&lt; 2%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">43</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">67.2%</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">2% - 5%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">10</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">15.6%</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">5% - 10%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">11</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">17.2%</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">&gt; 10%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.0%</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Fig9"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->9<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Distribución de trials por rango de CER</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Distribución de trials por rango de CER" height="407" src="figures/figura_9.png" style="width:424.5pt;height:305.25pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">La mayoría de trials (67.2%) alcanzaron CER &lt; 2%, cumpliendo el objetivo establecido. Ningún trial presentó fallos catastróficos (CER &gt; 10%), demostrando la estabilidad de la optimización con GPU.</span></p>
<h4><span lang="ES">Mejor Configuración Encontrada</span></h4>
<p class="MsoNormal"><span lang="ES">La configuración que minimizó el CER fue:</span></p>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word">Best CER: 0.007884 (0.79%)
Best WER: 0.077848 (7.78%)
Configuración óptima:
textline_orientation: True
use_doc_orientation_classify: True
use_doc_unwarping: False
text_det_thresh: 0.0462
text_det_box_thresh: 0.4862
text_det_unclip_ratio: 0.0
text_rec_score_thresh: 0.5658</pre>
</div>
<a name="_Ref_Tab35"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->35<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Configuración óptima identificada.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Parámetro</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Valor óptimo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Valor por defecto</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Cambio</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">textline_orientation</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>True</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">False</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Activado</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">use_doc_orientation_classify</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>True</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">False</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Activado</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">use_doc_unwarping</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">False</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">False</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Sin cambio</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">text_det_thresh</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>0.0462</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.3</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-0.254</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">text_det_box_thresh</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>0.4862</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.6</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-0.114</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">text_det_unclip_ratio</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.0</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">1.5</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-1.5 (fijado)</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">text_rec_score_thresh</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>0.5658</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.5</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">+0.066</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Análisis de Correlación</span></h4>
<p class="MsoNormal"><span lang="ES">Se calculó la correlación de Pearson entre los parámetros de configuración (codificados como 0/1 en el caso de booleanos) y las métricas de error:</span></p>
<a name="_Ref_Tab36"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->36<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Correlación de parámetros con CER.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Parámetro</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Correlación con CER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Interpretación</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>+0.879</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación alta positiva</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-0.712</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación alta negativa</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">textline_orientation</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-0.535</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación moderada negativa</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">+0.428</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación moderada positiva</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_box_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">+0.311</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación moderada positiva</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_rec_score_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-0.268</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación moderada negativa</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">NaN</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Varianza cero (valor fijo)</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/correlations/paddle_correlations.csv"><span style="font-family:Consolas;font-size:10pt">src/results/correlations/paddle_correlations.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Tab37"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->37<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Correlación de parámetros con WER.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Parámetro</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Correlación con WER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Interpretación</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>+0.744</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación alta positiva</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-0.602</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación alta negativa</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">textline_orientation</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-0.591</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación moderada negativa</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">+0.399</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación moderada positiva</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_box_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">+0.256</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación moderada positiva</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_rec_score_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-0.080</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación débil negativa</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">NaN</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Varianza cero (valor fijo)</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/correlations/paddle_correlations.csv"><span style="font-family:Consolas;font-size:10pt">src/results/correlations/paddle_correlations.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Fig10"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->10<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Correlación de hiperparámetros con CER</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Correlación de hiperparámetros con CER" height="404" src="figures/figura_10.png" style="width:424.5pt;height:303.0pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/correlations/paddle_correlations.csv"><span style="font-family:Consolas;font-size:10pt">src/results/correlations/paddle_correlations.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Leyenda: Valores positivos indican que aumentar el parámetro incrementa el CER. Los parámetros booleanos se codifican como 0/1 para el cálculo de la correlación. Abreviaturas: unwarp = <span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span>, orient_doc = <span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span>, orient_line = <span style="font-family:Consolas;font-size:10pt">textline_orientation</span>, det_thresh = <span style="font-family:Consolas;font-size:10pt">text_det_thresh</span>, box_thresh = <span style="font-family:Consolas;font-size:10pt">text_det_box_thresh</span>, rec_score = <span style="font-family:Consolas;font-size:10pt">text_rec_score_thresh</span>.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Hallazgo clave</b>: <span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span> presenta la correlación positiva más alta con CER (0.879), lo que indica que activar este módulo incrementa el error en este dataset. En cambio, <span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span> y <span style="font-family:Consolas;font-size:10pt">textline_orientation</span> tienen correlación negativa, asociada a mejoras cuando están activados.</span></p>
<h4><span lang="ES">Impacto del Parámetro textline_orientation</span></h4>
<p class="MsoNormal"><span lang="ES">El parámetro booleano <span style="font-family:Consolas;font-size:10pt">textline_orientation</span> demostró tener el mayor impacto en el rendimiento:</span></p>
<a name="_Ref_Tab38"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->38<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Impacto del parámetro textline_orientation.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">textline_orientation</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CER Medio</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CER Std</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">WER Medio</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">N trials</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">True</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">1.74%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">1.94%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8.75%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">52</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">False</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">4.73%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">1.37%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">11.42%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">12</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Interpretación:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Reducción del CER</b>: Con <span style="font-family:Consolas;font-size:10pt">textline_orientation=True</span>, el CER medio es 2.7 veces menor (1.74% vs 4.73%).</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Varianza</b>: La desviación estándar es mayor cuando <span style="font-family:Consolas;font-size:10pt">textline_orientation=True</span> (1.94% vs 1.37%), aunque los valores medios siguen siendo mejores.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Reducción del CER</b>: 63.2% cuando se habilita la clasificación de orientación de línea.</span></p>
<a name="_Ref_Fig11"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->11<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Impacto de textline_orientation en CER</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Impacto de textline_orientation en CER" height="404" src="figures/figura_11.png" style="width:424.5pt;height:303.0pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Explicación técnica:</span></p>
<p class="MsoNormal"><span lang="ES">El parámetro <span style="font-family:Consolas;font-size:10pt">textline_orientation</span> activa un clasificador que determina la orientación de cada línea de texto detectada. Para documentos con índice, encabezados y listas, este clasificador asegura que el texto se lea en el orden correcto, evitando la mezcla de líneas de diferentes secciones.</span></p>
<h4><span lang="ES">Análisis de Trials con Mayor CER</span></h4>
<p class="MsoNormal"><span lang="ES">No se observaron fallos catastróficos (CER &gt; 10%). El CER máximo fue 7.30%, por lo que el análisis se centra en los trials con peor desempeño relativo:</span></p>
<a name="_Ref_Tab39"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->39<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Trials con mayor CER.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Trial ID</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">text_det_thresh</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">textline_orientation</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">f699b826</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">7.30%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.285</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">False</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">34bfaecf</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">7.29%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.030</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">True</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8c1998de</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">6.44%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.369</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">True</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8b33e2a2</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">6.41%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.664</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">False</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Observación: Los peores resultados muestran variabilidad tanto en <span style="font-family:Consolas;font-size:10pt">text_det_thresh</span> como en <span style="font-family:Consolas;font-size:10pt">textline_orientation</span>, sin un patrón único dominante en este subconjunto de trials.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Comparación Baseline vs Optimizado</span></h3>
<h4><span lang="ES">Evaluación sobre Dataset Completo</span></h4>
<p class="MsoNormal"><span lang="ES">La configuración óptima identificada se evaluó sobre el dataset completo de 45 páginas, comparando con la configuración baseline (valores por defecto de PaddleOCR). Los parámetros optimizados más relevantes fueron: <span style="font-family:Consolas;font-size:10pt">textline_orientation=True</span>, <span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify=True</span>, <span style="font-family:Consolas;font-size:10pt">text_det_thresh=0.0462</span>, <span style="font-family:Consolas;font-size:10pt">text_det_box_thresh=0.4862</span>, y <span style="font-family:Consolas;font-size:10pt">text_rec_score_thresh=0.5658</span>.</span></p>
<a name="_Ref_Tab40"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->40<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Comparación baseline vs optimizado (45 páginas).</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Modelo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Precisión Caracteres</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">WER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Precisión Palabras</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR (Baseline)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8.85%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">91.15%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">13.05%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">86.95%</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR-HyperAdjust</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>7.72%</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>92.28%</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>11.40%</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>88.60%</b></span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_paddle.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoQuote"><i><span lang="ES"><b>Nota sobre generalización:</b> El mejor trial individual (5 páginas) alcanzó un CER de 0.79%, cumpliendo el objetivo de CER &lt; 2%. Sin embargo, al aplicar la configuración al dataset completo de 45 páginas, el CER aumentó a 7.72%, evidenciando sobreajuste al subconjunto de entrenamiento. Esta diferencia es un hallazgo importante que se discute en la sección de análisis.</span></i></p>
<h4><span lang="ES">Métricas de Mejora</span></h4>
<a name="_Ref_Tab41"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->41<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Análisis cuantitativo de la mejora.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Forma de Medición</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">WER</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Valor baseline</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8.85%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">13.05%</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Valor optimizado</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">7.72%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">11.40%</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Mejora absoluta</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-1.13 pp</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-1.65 pp</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Reducción relativa del error</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>12.8%</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>12.6%</b></span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Factor de mejora</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">1.15×</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">1.14×</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>Mejor trial (5 páginas)</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>0.79%</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>7.78%</b></span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_paddle.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Fig12"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->12<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Reducción de errores: Baseline vs Optimizado (45 páginas)</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Reducción de errores: Baseline vs Optimizado (45 páginas)" height="404" src="figures/figura_12.png" style="width:424.5pt;height:303.0pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_paddle.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Leyenda: CER = Character Error Rate, WER = Word Error Rate. Baseline = configuración por defecto de PaddleOCR. Optimizado = configuración encontrada por Ray Tune. Los valores corresponden al dataset completo de 45 páginas.</span></p>
<h4><span lang="ES">Impacto Práctico</span></h4>
<p class="MsoNormal"><span lang="ES">La reducción de CER y WER implica menos correcciones manuales en el texto reconocido. En conjunto, los resultados muestran una mejora medible en precisión, aunque la generalización depende del tamaño y representatividad del subconjunto de optimización.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Tiempo de Ejecución</span></h3>
<a name="_Ref_Tab42"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->42<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Métricas de tiempo del experimento (GPU).</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Métrica</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Valor</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Tiempo total del experimento</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~5.0 minutos</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Tiempo medio por trial</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">4.64 segundos</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Tiempo medio por página</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.84 segundos</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Variabilidad (std)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.53 segundos/página</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Páginas procesadas totales</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">320</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Observaciones:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span>El tiempo por página (~0.84 segundos) corresponde a ejecución con GPU (RTX 3060).</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">2.<span style="font-size:7pt">   </span>La variabilidad del tiempo es moderada (std = 0.53 s/página), con algunos trials más lentos debido a configuraciones con módulos de preprocesamiento activos.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span>En comparación, la ejecución en CPU requiere ~69 segundos/página (82× más lento), lo que justifica el uso de GPU para optimización y producción.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Síntesis de la Optimización</span></h3>
<p class="MsoNormal"><span lang="ES">Los 64 trials ejecutados con Ray Tune y aceleración GPU revelaron patrones claros en el comportamiento de PaddleOCR. El hallazgo más significativo es que los parámetros estructurales, <span style="font-family:Consolas;font-size:10pt">textline_orientation</span> y <span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span>, tienen mayor impacto que los umbrales numéricos. Al activarlos se reduce el CER medio de 4.73% a 1.74%. En cuanto a umbrales, valores bajos de <span style="font-family:Consolas;font-size:10pt">text_det_thresh</span> (aprox. 0.05) benefician el rendimiento, mientras que <span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span> resulta innecesario para PDFs digitales.</span></p>
<p class="MsoNormal"><span lang="ES">El mejor trial alcanzó un CER de 0.79%, cumpliendo el objetivo de CER &lt; 2%. No obstante, la validación sobre el dataset completo de 45 páginas arrojó un CER de 7.72%, evidenciando sobreajuste al subconjunto de optimización de 5 páginas. Aun así, esto representa una mejora del 12.8% respecto al baseline (8.85%), demostrando el valor de la optimización sistemática incluso cuando la generalización es imperfecta.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Discusión y análisis de resultados</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Introducción</span></h3>
<p class="MsoNormal"><span lang="ES">Los resultados obtenidos en las secciones anteriores requieren un análisis que trascienda los números individuales para comprender su significado práctico. En esta sección se consolidan los hallazgos del benchmark comparativo y la optimización de hiperparámetros, evaluando hasta qué punto se han cumplido los objetivos planteados y qué limitaciones condicionan la generalización de las conclusiones.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Resumen Consolidado de Resultados</span></h3>
<h4><span lang="ES">Progresión del Rendimiento</span></h4>
<a name="_Ref_Tab43"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->43<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Evolución del rendimiento a través del estudio.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Fase</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Configuración</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Mejora vs baseline</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Benchmark inicial</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Baseline (5 páginas)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">7.76%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimización (mejor trial)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimizada (5 páginas)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>0.79%</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">89.8%</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Validación final</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimizada (45 páginas)</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">7.72%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">12.8%</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_paddle.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Fig13"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->13<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Evolución del CER a través del estudio</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Evolución del CER a través del estudio" height="404" src="figures/figura_13.png" style="width:424.5pt;height:303.0pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_paddle.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Leyenda: El mejor trial alcanza CER 0.79% (objetivo cumplido). La validación sobre dataset completo muestra CER 7.72%, evidenciando sobreajuste al subconjunto de optimización.</span></p>
<p class="MsoNormal"><span lang="ES">El incremento del CER de 0.79% (5 páginas) a 7.72% (45 páginas) evidencia sobreajuste al subconjunto de optimización. Este fenómeno es esperado cuando se optimiza sobre un subconjunto pequeño y se valida sobre el dataset completo con mayor diversidad de secciones y estilos.</span></p>
<h4><span lang="ES">Comparación con Objetivo</span></h4>
<a name="_Ref_Tab44"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->44<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Verificación del objetivo general.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Aspecto</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Objetivo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Resultado (trial)</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Resultado (full)</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Cumplimiento</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Métrica</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CER</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CER</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CER</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"></span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Umbral</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">&lt; 2%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>0.79%</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">7.72%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Parcial</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Método</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Sin fine-tuning</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Solo hiperparámetros</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Solo hiperparámetros</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"></span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Hardware</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">GPU</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RTX 3060</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RTX 3060</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"></span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_paddle.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoQuote"><i><span lang="ES"><b>Análisis del cumplimiento:</b> El objetivo de CER &lt; 2% se cumple en el mejor trial individual (0.79%), demostrando que la optimización de hiperparámetros puede alcanzar la precisión objetivo. Sin embargo, la validación sobre el dataset completo (7.72%) muestra que la generalización requiere trabajo adicional, como un subconjunto de optimización más representativo o técnicas de regularización.</span></i></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Análisis Detallado de Hiperparámetros</span></h3>
<h4><span lang="ES">Jerarquía de Importancia</span></h4>
<p class="MsoNormal"><span lang="ES">Basándose en el análisis de los resultados de optimización:</span></p>
<a name="_Ref_Tab45"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->45<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Ranking de importancia de hiperparámetros.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Rank</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Parámetro</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Pearson (CER)</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Signo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Evidencia</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">1</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.879</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Positivo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación más alta con CER</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">2</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-0.712</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Negativo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación alta con CER</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">3</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">textline_orientation</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-0.535</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Negativo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación alta con CER</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">4</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.428</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Positivo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación moderada con CER</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">5</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_box_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.311</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Positivo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación moderada con CER</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">6</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_rec_score_thresh</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-0.268</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Negativo</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlación moderada con CER</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/correlations/paddle_correlations.csv"><span style="font-family:Consolas;font-size:10pt">src/results/correlations/paddle_correlations.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Fig14"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->14<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Ranking de importancia de hiperparámetros</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Ranking de importancia de hiperparámetros" height="404" src="figures/figura_14.png" style="width:424.5pt;height:303.0pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/correlations/paddle_correlations.csv"><span style="font-family:Consolas;font-size:10pt">src/results/correlations/paddle_correlations.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Leyenda: Impacto relativo basado en |Pearson| (CER), normalizado respecto al valor máximo.</span></p>
<p class="MsoNormal"><span lang="ES">En términos de correlación lineal, <span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span> es el parámetro con mayor relación absoluta con el CER y su signo positivo indica que activarlo incrementa el error en este dataset. En cambio, <span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span> y <span style="font-family:Consolas;font-size:10pt">textline_orientation</span> presentan correlación negativa, lo que sugiere mejoras cuando están activados.</span></p>
<h4><span lang="ES">Análisis del Parámetro textline_orientation</span></h4>
<p class="MsoNormal"><span lang="ES"><b>Por qué es tan importante:</b></span></p>
<p class="MsoNormal"><span lang="ES">El clasificador de orientación de línea resuelve un problema fundamental en documentos con secciones y cambios de formato: determinar el orden correcto de lectura. Sin este clasificador:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span>Las líneas del índice pueden mezclarse con el cuerpo del texto</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">2.<span style="font-size:7pt">   </span>Los encabezados pueden insertarse en posiciones incorrectas</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">3.<span style="font-size:7pt">   </span>Las listas numeradas pueden leerse en orden incorrecto</span></p>
<p class="MsoNormal"><span lang="ES">Para documentos académicos que típicamente incluyen índice, listas y encabezados multinivel, este clasificador es esencial.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Recomendación</b>: Siempre activar <span style="font-family:Consolas;font-size:10pt">textline_orientation=True</span> para documentos estructurados.</span></p>
<h4><span lang="ES">Análisis del Parámetro text_det_thresh</span></h4>
<p class="MsoNormal"><span lang="ES"><b>Comportamiento observado:</b></span></p>
<p class="MsoNormal"><span lang="ES">El análisis de correlación muestra que valores más bajos de <span style="font-family:Consolas;font-size:10pt">text_det_thresh</span> favorecen el rendimiento en este dataset. El valor óptimo encontrado en los trials fue 0.0462, lo que sugiere que una detección más sensible beneficia el resultado.</span></p>
<h4><span lang="ES">Análisis de Parámetros de Preprocesamiento</span></h4>
<p class="MsoNormal"><span lang="ES"><b><span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span>:</b></span></p>
<p class="MsoNormal"><span lang="ES">En la configuración óptima GPU, este parámetro está <b>activado</b> (True), a diferencia de lo observado en experimentos anteriores. Esto sugiere que la clasificación de orientación del documento puede beneficiar incluso documentos digitales cuando se combina con <span style="font-family:Consolas;font-size:10pt">textline_orientation=True</span>.</span></p>
<p class="MsoNormal"><span lang="ES"><b><span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span>:</b></span></p>
<p class="MsoNormal"><span lang="ES">Este módulo permanece desactivado en la configuración óptima. Está diseñado para:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Documentos escaneados con rotación</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Fotografías de documentos con perspectiva</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Documentos curvados o deformados</span></p>
<p class="MsoNormal"><span lang="ES">Para documentos PDF digitales como los evaluados, este módulo es innecesario y puede introducir artefactos.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Análisis de Casos de Fallo</span></h3>
<h4><span lang="ES">Clasificación de Errores</span></h4>
<a name="_Ref_Tab46"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->46<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Tipología de errores observados.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tipo de error</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Frecuencia</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Ejemplo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Causa probable</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Pérdida de acentos</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Alta</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">más → mas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Modelo de reconocimiento</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Duplicación de caracteres</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Media</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">titulación → titulacióon</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Solapamiento de detecciones</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Confusión de puntuación</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Media</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">¿ → ?</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Caracteres similares</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Pérdida de eñe</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Baja</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">año → ano</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Modelo de reconocimiento</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Texto desordenado</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Variable</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Mezcla de líneas</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Fallo de orientación</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Análisis cualitativo.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Patrones de Fallo por Tipo de Contenido</span></h4>
<a name="_Ref_Tab47"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->47<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Tasa de error por tipo de contenido (cualitativa).</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tipo de contenido</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Nivel de error</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Factor de riesgo</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Párrafos de texto</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Bajo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Bajo</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Listas numeradas</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Índice y encabezados</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Encabezados + pie de página</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Texto con cambios tipográficos</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Medio</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Listas con numeración densa</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Alto</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Alto</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Estimación cualitativa.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Comparación con Objetivos Específicos</span></h3>
<a name="_Ref_Tab48"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->48<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Cumplimiento de objetivos específicos.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Objetivo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Descripción</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Resultado</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Estado</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">OE1</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Comparar soluciones OCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR, PaddleOCR, DocTR evaluados; PaddleOCR seleccionado</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">✓ Cumplido</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">OE2</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Preparar dataset de evaluación</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">45 páginas con ground truth</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">✓ Cumplido</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">OE3</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Identificar hiperparámetros críticos</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">textline_orientation</span>, <span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span>, <span style="font-family:Consolas;font-size:10pt">text_det_thresh</span> identificados</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">✓ Cumplido</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">OE4</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optimizar con Ray Tune (≥50 trials)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">64 trials ejecutados con GPU</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">✓ Cumplido</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">OE5</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Validar configuración optimizada</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CER: 8.85% → 7.72% (dataset), 0.79% (mejor trial)</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">✓ Parcial</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_paddle.md</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/correlations/paddle_correlations.csv"><span style="font-family:Consolas;font-size:10pt">src/results/correlations/paddle_correlations.csv</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoQuote"><i><span lang="ES"><b>Nota sobre OE5:</b> El objetivo de CER &lt; 2% se cumple en el mejor trial individual (0.79%). La validación sobre el dataset completo (7.72%) muestra que la generalización requiere mayor trabajo, identificándose como línea de trabajo futuro.</span></i></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Limitaciones del Estudio</span></h3>
<h4><span lang="ES">Limitaciones de Generalización</span></h4>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Tipo de documento único</b>: Solo se evaluaron documentos académicos de UNIR. La configuración óptima puede no ser transferible a otros tipos de documentos (facturas, formularios, contratos).</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Idioma único</b>: El estudio se centró en español. Otros idiomas con diferentes características ortográficas podrían requerir configuraciones diferentes.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Formato único</b>: Solo se evaluaron PDFs digitales. Documentos escaneados o fotografías de documentos podrían beneficiarse de diferentes configuraciones.</span></p>
<h4><span lang="ES">Limitaciones Metodológicas</span></h4>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Ground truth automático</b>: El texto de referencia se extrajo programáticamente del PDF, lo cual puede introducir errores en el orden de lectura cuando hay secciones con encabezados y saltos de línea.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Tamaño del dataset</b>: 45 páginas es un dataset limitado. Un dataset más amplio proporcionaría estimaciones más robustas.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Parámetro fijo</b>: <span style="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span> se mantuvo en 0.0 durante todo el experimento. Explorar este parámetro podría revelar mejoras adicionales.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Subconjunto de ajuste limitado</b>: El ajuste de hiperparámetros se realizó sobre 5 páginas (páginas 5-10), lo que contribuyó al sobreajuste observado en la validación del dataset completo.</span></p>
<h4><span lang="ES">Limitaciones de Validación</span></h4>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Sin validación cruzada</b>: No se realizó validación cruzada sobre diferentes subconjuntos del dataset.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Sin test set independiente</b>: El dataset de validación final se solapaba parcialmente con el de optimización.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Implicaciones Prácticas</span></h3>
<h4><span lang="ES">Guía de Configuración Recomendada</span></h4>
<p class="MsoNormal"><span lang="ES">Para documentos académicos en español similares a los evaluados:</span></p>
<a name="_Ref_Tab49"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->49<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Configuración recomendada para PaddleOCR con GPU.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Parámetro</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Valor</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Prioridad</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Justificación</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">textline_orientation</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">True</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Obligatorio</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Crítico para documentos con secciones</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">True</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Recomendado</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Mejora orientación de documento</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.05 (rango: 0.04-0.10)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Recomendado</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Detección sensible beneficia resultados</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_box_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.49 (rango: 0.4-0.6)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Recomendado</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Balance de confianza</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_rec_score_thresh</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.57 (rango: 0.5-0.7)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Opcional</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Filtra reconocimientos poco confiables</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">False</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">No recomendado</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Innecesario para PDFs digitales</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h4><span lang="ES">Cuándo Aplicar Esta Metodología</span></h4>
<p class="MsoNormal"><span lang="ES">La optimización de hiperparámetros es recomendable cuando:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>GPU disponible</b>: Acelera significativamente la exploración del espacio de hiperparámetros (82× más rápido que CPU).</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Modelo preentrenado adecuado</b>: El modelo ya soporta el idioma objetivo (como PaddleOCR para español).</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Dominio específico</b>: Se busca optimizar para un tipo de documento particular.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Mejora incremental</b>: El rendimiento baseline es aceptable pero mejorable.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Sin datos de entrenamiento</b>: No se dispone de datasets etiquetados para fine-tuning.</span></p>
<h4><span lang="ES">Cuándo NO Aplicar Esta Metodología</span></h4>
<p class="MsoNormal"><span lang="ES">La optimización de hiperparámetros puede ser insuficiente cuando:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Idioma no soportado</b>: El modelo no incluye el idioma en su vocabulario.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Escritura manuscrita</b>: Requiere fine-tuning o modelos especializados.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Documentos muy degradados</b>: Escaneos de baja calidad o documentos históricos.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Requisitos de CER muy bajo</b>: Puede requerir fine-tuning para alcanzar precisiones muy altas.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Síntesis del Capítulo</span></h3>
<p class="MsoNormal"><span lang="ES">A lo largo de este capítulo se ha desarrollado el proceso completo de evaluación y optimización de sistemas OCR para documentos académicos en español. El benchmark comparativo inicial permitió seleccionar PaddleOCR como motor base gracias a su combinación de rendimiento y configurabilidad. La posterior optimización con Ray Tune y Optuna, ejecutada sobre 64 trials con aceleración GPU, identificó los parámetros críticos para maximizar el rendimiento: <span style="font-family:Consolas;font-size:10pt">textline_orientation</span>, <span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span> y <span style="font-family:Consolas;font-size:10pt">text_det_thresh</span>.</span></p>
<p class="MsoNormal"><span lang="ES">Los resultados cuantifican tanto los logros como las limitaciones del enfoque. El mejor trial individual alcanzó un CER de 0.79%, cumpliendo holgadamente el objetivo de CER &lt; 2%. Sin embargo, la validación sobre el dataset completo de 45 páginas reveló un CER de 7.72%, lo que representa una mejora del 12.8% respecto al baseline (8.85%) pero evidencia sobreajuste al subconjunto de optimización. Esta observación es valiosa: indica que futuros trabajos deberían emplear subconjuntos de optimización más representativos o aplicar técnicas de regularización.</span></p>
<p class="MsoNormal"><span lang="ES">Desde el punto de vista práctico, la infraestructura dockerizada desarrollada y la aceleración GPU (82× más rápida que CPU) demuestran la viabilidad de esta metodología tanto para experimentación como para despliegue en producción.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/run_tuning.py"><span style="font-family:Consolas;font-size:10pt">src/run_tuning.py</span></a> - Script principal de optimización</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/raytune/requirements.txt</span></a> - Dependencias del orquestador Ray Tune</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/paddle_ocr/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/paddle_ocr/requirements.txt</span></a> - Dependencias del servicio PaddleOCR</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/easyocr_service/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/easyocr_service/requirements.txt</span></a> - Dependencias del servicio EasyOCR</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/doctr_service/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/doctr_service/requirements.txt</span></a> - Dependencias del servicio DocTR</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a> - Resultados CSV de PaddleOCR</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/correlations/paddle_correlations.csv"><span style="font-family:Consolas;font-size:10pt">src/results/correlations/paddle_correlations.csv</span></a> - Correlaciones de hiperparámetros (PaddleOCR)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_easyocr_results_20260119_120204.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_easyocr_results_20260119_120204.csv</span></a> - Resultados CSV de EasyOCR</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_doctr_results_20260119_121445.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_doctr_results_20260119_121445.csv</span></a> - Resultados CSV de DocTR</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune_paddle_subproc_results_20251207_192320.csv"><span style="font-family:Consolas;font-size:10pt">src/raytune_paddle_subproc_results_20251207_192320.csv</span></a> - Referencia de tiempos en CPU para PaddleOCR</span></p>
<p class="MsoNormal"><span lang="ES">Imágenes Docker:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/paddle-ocr-gpu</span></a> - PaddleOCR con soporte GPU</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/-/packages/container/easyocr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/easyocr-gpu</span></a> - EasyOCR con soporte GPU</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><a href="https://seryus.ddns.net/unir/-/packages/container/doctr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/doctr-gpu</span></a> - DocTR con soporte GPU</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Comparativa de Rendimiento CPU vs GPU</span></h3>
<p class="MsoNormal"><span lang="ES">Esta sección presenta la comparación de rendimiento entre ejecución en CPU y GPU, justificando la elección de GPU para el experimento principal y demostrando el impacto práctico de la aceleración por hardware.</span></p>
<h4><span lang="ES">Configuración del Entorno GPU</span></h4>
<a name="_Ref_Tab50"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->50<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Especificaciones del entorno GPU utilizado.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Componente</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Especificación</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">GPU</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">NVIDIA GeForce RTX 3060 Laptop</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">VRAM</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">5.66 GB</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CUDA</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">12.4</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Sistema Operativo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Ubuntu 24.04.3 LTS</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Kernel</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">6.14.0-37-generic</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Nota: Los requisitos de entorno documentados por dependencias se detallan en <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/07_anexo_a.md"><span style="font-family:Consolas;font-size:10pt">docs/07_anexo_a.md</span></a>, sección A.9.</span></p>
<p class="MsoNormal"><span lang="ES">Este hardware representa configuración típica de desarrollo, permitiendo evaluar el rendimiento en condiciones realistas de despliegue.</span></p>
<h4><span lang="ES">Comparación CPU vs GPU</span></h4>
<p class="MsoNormal"><span lang="ES">Se comparó el tiempo de procesamiento entre CPU y GPU utilizando los datos de <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune_paddle_subproc_results_20251207_192320.csv"><span style="font-family:Consolas;font-size:10pt">src/raytune_paddle_subproc_results_20251207_192320.csv</span></a>(CPU) y <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>(GPU).</span></p>
<a name="_Ref_Tab51"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->51<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Rendimiento comparativo CPU vs GPU.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Métrica</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CPU</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">GPU (RTX 3060)</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Factor de Aceleración</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Tiempo/Página (promedio)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">69.4s</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.84s</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>82x</b></span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Dataset completo (45 páginas)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~52 min</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~38 seg</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>82x</b></span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">64 trials × 5 páginas</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">6.2 horas</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~5.0 min</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>75x</b></span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune_paddle_subproc_results_20251207_192320.csv"><span style="font-family:Consolas;font-size:10pt">src/raytune_paddle_subproc_results_20251207_192320.csv</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Fig15"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->15<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Tiempo de procesamiento: CPU vs GPU (segundos/página)</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Tiempo de procesamiento: CPU vs GPU (segundos/página)" height="404" src="figures/figura_15.png" style="width:424.5pt;height:303.0pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune_paddle_subproc_results_20251207_192320.csv"><span style="font-family:Consolas;font-size:10pt">src/raytune_paddle_subproc_results_20251207_192320.csv</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Leyenda: Aceleración de <b>82×</b> con GPU. El procesamiento de una página pasa de 69.4s (CPU) a 0.84s (GPU).</span></p>
<p class="MsoNormal"><span lang="ES">La aceleración de 82× obtenida con GPU transforma la viabilidad del enfoque:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Optimización en CPU (6.2 horas)</b>: Viable pero lento para iteraciones rápidas</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Optimización en GPU (~5.0 minutos)</b>: Permite explorar más configuraciones y realizar múltiples experimentos</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Producción con GPU (0.84s/página)</b>: Habilita procesamiento en tiempo real</span></p>
<h4><span lang="ES">Comparación de Modelos PaddleOCR</span></h4>
<p class="MsoNormal"><span lang="ES">PaddleOCR ofrece dos variantes de modelos: Mobile (optimizados para dispositivos con recursos limitados) y Server (mayor precisión a costa de mayor consumo de memoria). Se evaluó la viabilidad de ambas variantes en el hardware disponible.</span></p>
<a name="_Ref_Tab52"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->52<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Comparación de modelos Mobile vs Server en RTX 3060.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Modelo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">VRAM Requerida</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Resultado</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Recomendación</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PP-OCRv5 Mobile</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.06 GB</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Funciona correctamente</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">✓ Recomendado</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PP-OCRv5 Server</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">5.3 GB</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">OOM en página 2</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">✗ Requiere &gt;8 GB VRAM</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES">Los modelos Server, a pesar de ofrecer potencialmente mayor precisión, resultan inviables en hardware con VRAM limitada (≤6 GB) debido a errores de memoria (Out of Memory). Los modelos Mobile, con un consumo de memoria 88 veces menor, funcionan de manera estable y ofrecen rendimiento suficiente para el caso de uso evaluado.</span></p>
<h4><span lang="ES">Conclusiones de la Validación GPU</span></h4>
<p class="MsoNormal"><span lang="ES">La validación con aceleración GPU permite extraer las siguientes conclusiones:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Aceleración significativa</b>: La GPU proporciona una aceleración de 82× sobre CPU, haciendo viable el procesamiento en tiempo real para aplicaciones interactivas.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Modelos Mobile recomendados</b>: Para hardware con VRAM limitada (≤6 GB), los modelos Mobile de PP-OCRv5 ofrecen el mejor balance entre precisión y recursos, funcionando de manera estable sin errores de memoria.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Viabilidad práctica</b>: Con GPU, el procesamiento de un documento completo (45 páginas) toma ~38 segundos, validando la aplicabilidad en entornos de producción donde el tiempo de respuesta es crítico.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES">1.<span style="font-size:7pt">   </span><b>Escalabilidad</b>: La arquitectura de microservicios dockerizados utilizada para la validación GPU facilita el despliegue horizontal, permitiendo escalar el procesamiento según demanda.</span></p>
<p class="MsoNormal"><span lang="ES">Esta validación demuestra que la configuración optimizada mediante Ray Tune mejora la precisión (CER: 8.85% → 7.72% en dataset completo, 0.79% en mejor trial individual) y, combinada con aceleración GPU, resulta prácticamente aplicable en escenarios de producción real.</span></p><h1 style="mso-list:l22 level1 lfo18"><a name="_Toc160619818"><?if !supportLists?><span lang="ES" style='mso-fareast-font-family:"Calibri Light";mso-fareast-theme-font:
major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin'><span style="mso-list:Ignore">5.<span style='font:7.0pt "Times New Roman"'>  
</span></span></span><?endif?><span lang="ES" style="text-transform:none">Conclusiones
y trabajo futuro</span></a></h1><p class="MsoNormal"><span lang="ES">A lo largo de este trabajo se ha explorado la optimización de hiperparámetros como estrategia para mejorar el rendimiento de sistemas OCR sin necesidad de reentrenamiento. Las siguientes secciones evalúan el grado de cumplimiento de los objetivos planteados, sintetizan los hallazgos más relevantes y proponen direcciones para investigación futura.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Conclusiones</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Conclusiones Generales</span></h3>
<p class="MsoNormal"><span lang="ES">Los resultados obtenidos confirman que la optimización sistemática de hiperparámetros constituye una alternativa viable al fine-tuning para mejorar sistemas OCR preentrenados. La infraestructura dockerizada con aceleración GPU desarrollada en este trabajo no solo facilita la experimentación reproducible, sino que reduce drásticamente los tiempos de ejecución, haciendo viable la exploración exhaustiva de espacios de configuración.</span></p>
<p class="MsoNormal"><span lang="ES">El objetivo principal del trabajo era alcanzar un CER inferior al 2% en documentos académicos en español. Los resultados obtenidos se resumen a continuación:</span></p>
<a name="_Ref_Tab53"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->53<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Cumplimiento del objetivo de CER.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Métrica</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Objetivo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Mejor Trial</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Dataset Completo</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Cumplimiento</span></b></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CER</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">&lt; 2%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>0.79%</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>7.72%</b></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">✓ Parcial</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_paddle.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoQuote"><i><span lang="ES"><b>Nota:</b> El objetivo de CER &lt; 2% se cumple en el mejor trial individual (0.79%, 5 páginas). La validación sobre el conjunto de datos completo (45 páginas) muestra un CER de 7.72%, evidenciando sobreajuste al subconjunto de optimización. Esta diferencia se analiza en detalle en el Capítulo 4.</span></i></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Cumplimiento de los Objetivos Específicos</span></h3>
<p class="MsoNormal"><span lang="ES">La evaluación comparativa de soluciones OCR (OE1) reveló diferencias significativas entre las tres alternativas analizadas. De las tres soluciones de código abierto evaluadas, EasyOCR, PaddleOCR (PP-OCRv5) y DocTR, PaddleOCR demostró el mejor rendimiento base para documentos en español. Además, su arquitectura modular y la amplia configurabilidad de su pipeline lo convierten en el candidato idóneo para optimización mediante ajuste de hiperparámetros.</span></p>
<p class="MsoNormal"><span lang="ES">En cuanto a la preparación del conjunto de datos (OE2), se construyó un corpus estructurado con 45 páginas de documentos académicos de UNIR. La implementación de la clase <span style="font-family:Consolas;font-size:10pt">ImageTextDataset</span> permite cargar de forma eficiente pares imagen-texto. El texto de referencia se extrajo automáticamente del PDF original mediante PyMuPDF, garantizando así la consistencia entre las imágenes y sus transcripciones esperadas.</span></p>
<p class="MsoNormal"><span lang="ES">El análisis de hiperparámetros (OE3) arrojó resultados particularmente reveladores. El parámetro <span style="font-family:Consolas;font-size:10pt">textline_orientation</span> emergió como el factor más influyente, resultando crítico para obtener buenos resultados en documentos con diseños complejos. Asimismo, <span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify</span> demostró un impacto positivo en la configuración con GPU. Por otra parte, el umbral <span style="font-family:Consolas;font-size:10pt">text_det_thresh</span> presenta una correlación positiva moderada (0.43) con el CER, lo que indica que valores más bajos tienden a mejorar el rendimiento. Cabe destacar que <span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span> no aporta mejora alguna en documentos digitales, ya que estos no presentan las deformaciones físicas para las que fue diseñado este módulo.</span></p>
<p class="MsoNormal"><span lang="ES">La experimentación con Ray Tune (OE4) se completó satisfactoriamente mediante 64 trials ejecutados con el algoritmo OptunaSearch y aceleración GPU. El tiempo total del experimento, en torno a 5 minutos con una GPU RTX 3060, demuestra la viabilidad práctica de esta aproximación. La arquitectura basada en contenedores Docker resultó esencial para superar las incompatibilidades entre Ray y los motores OCR, al tiempo que garantiza la portabilidad y reproducibilidad de los experimentos.</span></p>
<p class="MsoNormal"><span lang="ES">Finalmente, la validación de la configuración óptima (OE5) se realizó sobre el conjunto de datos completo de 45 páginas. El mejor trial individual alcanzó un CER de 0.79%, equivalente a una precisión del 99.21%. Sin embargo, la evaluación sobre el conjunto de datos completo arrojó un CER de 7.72%, lo que representa una mejora del 12.8% respecto al baseline (8.85%), pero queda lejos del resultado del mejor trial. Esta diferencia revela un sobreajuste al subconjunto de optimización de 5 páginas, un fenómeno que se analiza en detalle en la sección de limitaciones.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Hallazgos Clave</span></h3>
<p class="MsoNormal"><span lang="ES">El hallazgo más significativo de este trabajo es que las decisiones arquitectónicas tienen mayor impacto que los umbrales numéricos. Un único parámetro booleano, <span style="font-family:Consolas;font-size:10pt">textline_orientation</span>, influye más en el rendimiento final que todos los umbrales continuos combinados. Este resultado sugiere que, al optimizar sistemas OCR, conviene priorizar la exploración de configuraciones estructurales antes de ajustar finamente los valores numéricos.</span></p>
<p class="MsoNormal"><span lang="ES">No obstante, los umbrales presentan límites operativos que deben respetarse. En este estudio no se observaron fallos catastróficos (CER &gt; 10%), pero los peores trials alcanzaron CER de hasta 7.30%, lo que indica que ciertas combinaciones de umbrales degradan el rendimiento. Este comportamiento sugiere la necesidad de acotar el espacio de búsqueda en futuros experimentos.</span></p>
<p class="MsoNormal"><span lang="ES">Otro hallazgo relevante es la innecesariedad de ciertos módulos para documentos digitales. Los PDF generados directamente desde procesadores de texto no presentan deformaciones físicas, como arrugas, curvaturas o rotaciones, para las que fueron diseñados los módulos de corrección. En estos casos, desactivar <span style="font-family:Consolas;font-size:10pt">use_doc_unwarping</span> no solo simplifica el pipeline, sino que puede mejorar el rendimiento al evitar procesamientos innecesarios.</span></p>
<p class="MsoNormal"><span lang="ES">Finalmente, los resultados demuestran que es posible mejorar modelos preentrenados mediante ajuste exclusivo de hiperparámetros de inferencia, sin necesidad de reentrenamiento. Sin embargo, esta aproximación requiere validación cuidadosa, ya que las configuraciones optimizadas sobre subconjuntos pequeños pueden no generalizar a conjuntos de datos más amplios o diversos.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Contribuciones del Trabajo</span></h3>
<p class="MsoNormal"><span lang="ES">La principal contribución de este trabajo es una metodología reproducible para la optimización de hiperparámetros OCR. El proceso completo, desde la preparación del conjunto de datos hasta la validación de la configuración óptima, queda documentado y es replicable mediante las herramientas Ray Tune y Optuna.</span></p>
<p class="MsoNormal"><span lang="ES">En segundo lugar, el análisis sistemático de los hiperparámetros de PaddleOCR constituye una contribución al conocimiento disponible sobre este motor OCR. Mediante el cálculo de correlaciones y análisis comparativo, se cuantifica el impacto de cada parámetro configurable, información que puede orientar futuros trabajos de optimización.</span></p>
<p class="MsoNormal"><span lang="ES">Como resultado práctico, se aporta una configuración validada específicamente para documentos académicos en español. Aunque la generalización a otros tipos de documentos requiere validación adicional, esta configuración representa un punto de partida sólido para aplicaciones en el ámbito hispanohablante.</span></p>
<p class="MsoNormal"><span lang="ES">Por último, todo el código fuente, las imágenes Docker y los datos experimentales están disponibles públicamente en el repositorio del proyecto, facilitando así la reproducción, verificación y extensión de este trabajo por parte de otros investigadores.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Limitaciones del Trabajo</span></h3>
<p class="MsoNormal"><span lang="ES">Es necesario reconocer varias limitaciones que condicionan el alcance de las conclusiones presentadas. En primer lugar, todos los experimentos se realizaron sobre un único tipo de documento, textos académicos de UNIR. La generalización a otros formatos, como facturas, formularios o documentos manuscritos, requeriría validación adicional con conjuntos de datos específicos.</span></p>
<p class="MsoNormal"><span lang="ES">El tamaño del corpus constituye otra limitación relevante. Con 45 páginas, el conjunto de datos es modesto para extraer conclusiones estadísticamente robustas. Además, el subconjunto de optimización de tan solo 5 páginas resultó insuficiente para evitar el sobreajuste, como evidencia la brecha entre el CER del mejor trial (0.79%) y el resultado sobre el conjunto completo (7.72%).</span></p>
<p class="MsoNormal"><span lang="ES">Desde el punto de vista metodológico, la extracción automática del texto de referencia mediante PyMuPDF puede introducir errores en documentos con diseños complejos, donde el orden de lectura no es evidente. Asimismo, el parámetro <span style="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span> permaneció fijo en 0.0 durante todo el experimento, dejando inexplorada una dimensión potencialmente relevante del espacio de hiperparámetros.</span></p>
<p class="MsoNormal"><span lang="ES">Por último, aunque la GPU RTX 3060 utilizada proporcionó una aceleración de 82× respecto a la ejecución en CPU, se trata de hardware de consumo. Equipamiento empresarial con mayor capacidad de VRAM permitiría ejecutar múltiples servicios OCR simultáneamente y explorar espacios de búsqueda más amplios en menos tiempo.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">Líneas de trabajo futuro</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Extensiones Inmediatas</span></h3>
<p class="MsoNormal"><span lang="ES">Las limitaciones identificadas sugieren varias extensiones que podrían abordarse a corto plazo. La más urgente es la validación cruzada de la configuración óptima en otros tipos de documentos en español, como facturas, formularios administrativos o textos manuscritos. Esta validación revelaría el grado de transferibilidad de los hallazgos actuales.</span></p>
<p class="MsoNormal"><span lang="ES">Para abordar el problema del sobreajuste, futuros experimentos deberían utilizar un subconjunto de optimización más amplio. Un conjunto más representativo reduciría la varianza y mejoraría la generalización de las configuraciones encontradas. Complementariamente, sería conveniente construir un corpus más amplio y diverso de documentos en español, incluyendo diferentes tipografías, diseños y calidades de imagen.</span></p>
<p class="MsoNormal"><span lang="ES">Desde el punto de vista técnico, queda pendiente la exploración del parámetro <span style="font-family:Consolas;font-size:10pt">text_det_unclip_ratio</span>, que permaneció fijo en este trabajo. Incluirlo en el espacio de búsqueda podría revelar interacciones con otros parámetros actualmente desconocidas.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Líneas de Investigación</span></h3>
<p class="MsoNormal"><span lang="ES">En un horizonte más amplio, surgen varias líneas de investigación prometedoras. Una de las más interesantes es el estudio del transfer learning de hiperparámetros: ¿las configuraciones óptimas para documentos académicos transfieren a otros dominios, o cada tipo de documento requiere optimización específica? La respuesta a esta pregunta tiene implicaciones prácticas significativas.</span></p>
<p class="MsoNormal"><span lang="ES">Otra dirección valiosa es la optimización multi-objetivo, que considere simultáneamente CER, WER y tiempo de inferencia. En aplicaciones reales, la precisión máxima no siempre es el único criterio; a menudo existe un compromiso entre calidad y velocidad que debe gestionarse explícitamente.</span></p>
<p class="MsoNormal"><span lang="ES">Técnicas de AutoML más avanzadas, como Neural Architecture Search o meta-learning, podrían automatizar aún más el proceso de configuración. Por último, una comparación rigurosa entre optimización de hiperparámetros y fine-tuning real cuantificaría la brecha de rendimiento entre ambas aproximaciones y ayudaría a decidir cuándo merece la pena el esfuerzo adicional del reentrenamiento.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Aplicaciones Prácticas</span></h3>
<p class="MsoNormal"><span lang="ES">Los resultados de este trabajo abren camino a varias aplicaciones prácticas. Una herramienta de configuración automática podría analizar un pequeño conjunto de documentos de muestra y determinar la configuración óptima de PaddleOCR para ese tipo específico de documento, democratizando el acceso a estas técnicas de optimización.</span></p>
<p class="MsoNormal"><span lang="ES">La integración de las configuraciones optimizadas en pipelines de producción representa otra aplicación natural. Los sistemas de procesamiento documental en organizaciones que manejan grandes volúmenes de documentos en español podrían beneficiarse directamente de los hallazgos de este trabajo.</span></p>
<p class="MsoNormal"><span lang="ES">Finalmente, la publicación de un benchmark público de OCR para documentos en español facilitaría la comparación objetiva de diferentes soluciones. La comunidad hispanohablante carece actualmente de recursos comparables a los disponibles para otros idiomas, y este trabajo podría contribuir a llenar ese vacío.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Reflexión Final</span></h3>
<p class="MsoNormal"><span lang="ES">En síntesis, este trabajo ha demostrado que la optimización de hiperparámetros representa una alternativa viable al fine-tuning para mejorar sistemas OCR, especialmente cuando se dispone de modelos preentrenados para el idioma objetivo y recursos limitados de tiempo o datos etiquetados.</span></p>
<p class="MsoNormal"><span lang="ES">La metodología propuesta cumple los requisitos de reproducibilidad científica: los experimentos pueden replicarse, los resultados son cuantificables y las conclusiones son aplicables a escenarios reales de procesamiento documental. Sin embargo, la experiencia también ha puesto de manifiesto la importancia de diseñar cuidadosamente los experimentos de optimización. Aunque el objetivo de CER inferior al 2% se alcanzó en el mejor trial individual (0.79%), la validación sobre el conjunto de datos completo (7.72%) revela que el tamaño y representatividad del subconjunto de optimización son factores críticos que no deben subestimarse.</span></p>
<p class="MsoNormal"><span lang="ES">La infraestructura dockerizada desarrollada constituye una aportación práctica que trasciende los resultados numéricos. Al encapsular los motores OCR en contenedores independientes, se resuelven problemas de compatibilidad entre dependencias y se garantiza que cualquier investigador pueda reproducir exactamente las condiciones experimentales. La aceleración de 82× proporcionada por GPU transforma lo que sería un experimento de horas en uno de minutos, haciendo viable la exploración exhaustiva de espacios de hiperparámetros con hardware de consumo.</span></p>
<p class="MsoNormal"><span lang="ES">El código fuente, las imágenes Docker y los datos experimentales están disponibles públicamente en el <a href="https://seryus.ddns.net/unir/MastersThesis">repositorio del proyecto</a>. Esta apertura busca facilitar no solo la reproducción de los resultados, sino también la extensión de este trabajo hacia nuevos tipos de documentos, idiomas o motores OCR.</span></p><p class="Ttulo1sinnumerar"><a name="_Toc160619821"><span lang="ES">Referencias
bibliográficas</span></a></p><p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Akiba, T., Sano, S., Yanase, T., Ohta, T., &amp; Koyama, M. (2019). Optuna: A next-generation hyperparameter optimization framework. <i>Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery &amp; Data Mining</i>, 2623-2631. https://doi.org/10.1145/3292500.3330701</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Baek, Y., Lee, B., Han, D., Yun, S., &amp; Lee, H. (2019). Character region awareness for text detection. <i>Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition</i>, 9365-9374. https://doi.org/10.1109/CVPR.2019.00959</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Bergstra, J., &amp; Bengio, Y. (2012). Random search for hyper-parameter optimization. <i>Journal of Machine Learning Research</i>, 13(1), 281-305. https://jmlr.org/papers/v13/bergstra12a.html</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Bergstra, J., Bardenet, R., Bengio, Y., &amp; Kégl, B. (2011). Algorithms for hyper-parameter optimization. <i>Advances in Neural Information Processing Systems</i>, 24, 2546-2554. https://papers.nips.cc/paper/2011/hash/86e8f7ab32cfd12577bc2619bc635690-Abstract.html</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Cohen, J. (1988). <i>Statistical power analysis for the behavioral sciences</i> (2nd ed.). Lawrence Erlbaum Associates.</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Doran, G. T. (1981). There's a S.M.A.R.T. way to write management's goals and objectives. <i>Management Review</i>, 70(11), 35-36.</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Du, Y., Li, C., Guo, R., Yin, X., Liu, W., Zhou, J., Bai, Y., Yu, Z., Yang, Y., Dang, Q., &amp; Wang, H. (2020). PP-OCR: A practical ultra lightweight OCR system. <i>arXiv preprint arXiv:2009.09941</i>. https://arxiv.org/abs/2009.09941</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Du, Y., Li, C., Guo, R., Cui, C., Liu, W., Zhou, J., Lu, B., Yang, Y., Liu, Q., Hu, X., Yu, D., &amp; Wang, H. (2023). PP-OCRv4: Mobile scene text detection and recognition. <i>arXiv preprint arXiv:2310.05930</i>. https://arxiv.org/abs/2310.05930</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Feurer, M., &amp; Hutter, F. (2019). Hyperparameter optimization. In F. Hutter, L. Kotthoff, &amp; J. Vanschoren (Eds.), <i>Automated machine learning: Methods, systems, challenges</i> (pp. 3-33). Springer. https://doi.org/10.1007/978-3-030-05318-5_1</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">He, P., Huang, W., Qiao, Y., Loy, C. C., &amp; Tang, X. (2016). Reading scene text in deep convolutional sequences. <i>Proceedings of the AAAI Conference on Artificial Intelligence</i>, 30(1), 3501-3508. https://doi.org/10.1609/aaai.v30i1.10291</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">JaidedAI. (2020). EasyOCR: Ready-to-use OCR with 80+ supported languages. GitHub. https://github.com/JaidedAI/EasyOCR</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Liang, J., Doermann, D., &amp; Li, H. (2005). Camera-based analysis of text and documents: A survey. <i>International Journal of Document Analysis and Recognition</i>, 7(2), 84-104. https://doi.org/10.1007/s10032-004-0138-z</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Liao, M., Wan, Z., Yao, C., Chen, K., &amp; Bai, X. (2020). Real-time scene text detection with differentiable binarization. <i>Proceedings of the AAAI Conference on Artificial Intelligence</i>, 34(07), 11474-11481. https://doi.org/10.1609/aaai.v34i07.6812</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Liaw, R., Liang, E., Nishihara, R., Moritz, P., Gonzalez, J. E., &amp; Stoica, I. (2018). Tune: A research platform for distributed model selection and training. <i>arXiv preprint arXiv:1807.05118</i>. https://arxiv.org/abs/1807.05118</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Mindee. (2021). DocTR: Document Text Recognition. GitHub. https://github.com/mindee/doctr</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Moritz, P., Nishihara, R., Wang, S., Tumanov, A., Liaw, R., Liang, E., Elibol, M., Yang, Z., Paul, W., Jordan, M. I., &amp; Stoica, I. (2018). Ray: A distributed framework for emerging AI applications. <i>13th USENIX Symposium on Operating Systems Design and Implementation (OSDI 18)</i>, 561-577. https://www.usenix.org/conference/osdi18/presentation/moritz</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Morris, A. C., Maier, V., &amp; Green, P. D. (2004). From WER and RIL to MER and WIL: Improved evaluation measures for connected speech recognition. <i>Eighth International Conference on Spoken Language Processing</i>. https://doi.org/10.21437/Interspeech.2004-668</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">PaddlePaddle. (2024). PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle. GitHub. https://github.com/PaddlePaddle/PaddleOCR</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Pearson, K. (1895). Notes on regression and inheritance in the case of two parents. <i>Proceedings of the Royal Society of London</i>, 58, 240-242. https://doi.org/10.1098/rspl.1895.0041</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">PyMuPDF. (2024). PyMuPDF documentation. https://pymupdf.readthedocs.io/</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Shi, B., Bai, X., &amp; Yao, C. (2016). An end-to-end trainable neural network for image-based sequence recognition and its application to scene text recognition. <i>IEEE Transactions on Pattern Analysis and Machine Intelligence</i>, 39(11), 2298-2304. https://doi.org/10.1109/TPAMI.2016.2646371</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Smith, R. (2007). An overview of the Tesseract OCR engine. <i>Ninth International Conference on Document Analysis and Recognition (ICDAR 2007)</i>, 2, 629-633. https://doi.org/10.1109/ICDAR.2007.4376991</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Zhou, X., Yao, C., Wen, H., Wang, Y., Zhou, S., He, W., &amp; Liang, J. (2017). EAST: An efficient and accurate scene text detector. <i>Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition</i>, 5551-5560. https://doi.org/10.1109/CVPR.2017.283</span></p>
<p class="MsoBibliography" style="margin-left:36.0pt;text-indent:-36.0pt"><span lang="ES">Zoph, B., &amp; Le, Q. V. (2017). Neural architecture search with reinforcement learning. <i>International Conference on Learning Representations (ICLR)</i>. https://arxiv.org/abs/1611.01578</span></p>
<p class="Anexo" style="mso-list:l2 level1 lfo23"><a name="_Toc160619822"><?if !supportLists?><span lang="ES" style='mso-fareast-font-family:"Calibri Light";mso-fareast-theme-font:
major-latin;mso-bidi-font-family:"Calibri Light";mso-bidi-theme-font:major-latin'><span style="mso-list:Ignore">Anexo A.<span style='font:7.0pt "Times New Roman"'>   
</span></span></span><?endif?><span lang="ES">Código fuente y datos analizados</span></a></p><p class="MsoNormal"><span lang="ES">Este anexo proporciona la información técnica necesaria para reproducir los experimentos descritos en este trabajo. Se incluyen las instrucciones de instalación, configuración de los servicios OCR dockerizados, ejecución de los scripts de optimización y acceso a los resultados experimentales.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.1 Repositorio del Proyecto</span></h2>
<p class="MsoNormal"><span lang="ES">Todo el código fuente y los datos utilizados en este trabajo están disponibles públicamente en el siguiente repositorio:</span></p>
<p class="MsoNormal"><span lang="ES"><b>URL del repositorio:</b> https://seryus.ddns.net/unir/MastersThesis</span></p>
<p class="MsoNormal"><span lang="ES">El repositorio incluye:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Servicios OCR dockerizados</b>: PaddleOCR, DocTR, EasyOCR con soporte GPU</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Scripts de evaluación</b>: Herramientas para evaluar y comparar modelos OCR</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Scripts de ajuste</b>: Ray Tune con Optuna para optimización de hiperparámetros</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Dataset</b>: Imágenes y textos de referencia utilizados</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Resultados</b>: Archivos CSV con los resultados de los 64 trials por servicio</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.2 Estructura del Repositorio</span></h2>
<a name="_Ref_Fig16"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->16<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Estructura del repositorio MastersThesis</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Estructura del repositorio MastersThesis" height="480" src="figures/figura_16.png" style="width:424.5pt;height:360.0pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Tab54"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->54<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Descripción de directorios principales.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Directorio</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Contenido</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/"><span style="font-family:Consolas;font-size:10pt">docs/</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Capítulos del TFM en Markdown (estructura UNIR)</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/"><span style="font-family:Consolas;font-size:10pt">docs/metrics/</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Métricas de rendimiento por servicio OCR</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/paddle_ocr/"><span style="font-family:Consolas;font-size:10pt">src/paddle_ocr/</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Servicio PaddleOCR dockerizado</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/doctr_service/"><span style="font-family:Consolas;font-size:10pt">src/doctr_service/</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Servicio DocTR dockerizado</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/easyocr_service/"><span style="font-family:Consolas;font-size:10pt">src/easyocr_service/</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Servicio EasyOCR dockerizado</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune/"><span style="font-family:Consolas;font-size:10pt">src/raytune/</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Scripts de optimización Ray Tune</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/"><span style="font-family:Consolas;font-size:10pt">src/results/</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CSVs con resultados de 64 trials por servicio</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/correlations/"><span style="font-family:Consolas;font-size:10pt">src/results/correlations/</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Correlaciones de hiperparámetros por servicio</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/thesis_output/"><span style="font-family:Consolas;font-size:10pt">thesis_output/</span></a></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Documento TFM generado + figuras PNG</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/instructions/"><span style="font-family:Consolas;font-size:10pt">instructions/</span></a></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Plantilla e instrucciones UNIR oficiales</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/">Repositorio del proyecto</a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.3 Requisitos de Software</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Sistema de Desarrollo</span></h3>
<a name="_Ref_Tab55"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->55<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Especificaciones del sistema de desarrollo.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Componente</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Especificación</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Sistema Operativo</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Ubuntu 24.04.3 LTS</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CPU</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">AMD Ryzen 7 5800H</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">RAM</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">16 GB DDR4</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">GPU</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">NVIDIA RTX 3060 Laptop (5.66 GB VRAM)</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">CUDA</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">12.4</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Dependencias</span></h3>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Dependencias</span></h3>
<a name="_Ref_Tab56"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->56<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Dependencias del proyecto.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Componente</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Versión</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddlePaddle</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">3.2.2</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">3.3.2</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Ray Tune</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">2.52.1</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Optuna</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">4.7.0</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DocTR (python-doctr)</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">&gt;= 0.8.0</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">&gt;= 1.7.0</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Docker</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Requerido para contenedores</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">NVIDIA Container Toolkit</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Requerido para GPU</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/paddle_ocr/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/paddle_ocr/requirements.txt</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/raytune/requirements.txt</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/doctr_service/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/doctr_service/requirements.txt</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/easyocr_service/requirements.txt"><span style="font-family:Consolas;font-size:10pt">src/easyocr_service/requirements.txt</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/README.md"><span style="font-family:Consolas;font-size:10pt">src/README.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.4 Instrucciones de Ejecución de Servicios OCR</span></h2>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.4 Instrucciones de Ejecución de Servicios OCR</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">PaddleOCR (Puerto 8002)</span></h3>
<p class="MsoNormal"><span lang="ES"><b>Imágenes Docker:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">GPU: <a href="https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-gpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/paddle-ocr-gpu</span></a></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">CPU: <a href="https://seryus.ddns.net/unir/-/packages/container/paddle-ocr-cpu/latest"><span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/paddle-ocr-cpu</span></a></span></p>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word">cd src/paddle_ocr
# GPU (recomendado)
docker compose up -d
# CPU (más lento, 82x)
docker compose -f docker-compose.cpu-registry.yml up -d</pre>
</div>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">DocTR (Puerto 8003)</span></h3>
<p class="MsoNormal"><span lang="ES"><b>Imagen Docker:</b> <span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/doctr-gpu</span>(https://seryus.ddns.net/unir/-/packages/container/doctr-gpu/latest)</span></p>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word">cd src/doctr_service
# GPU
docker compose up -d</pre>
</div>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">EasyOCR (Puerto 8002)</span></h3>
<p class="MsoQuote"><i><span lang="ES"><b>Nota:</b> EasyOCR utiliza el mismo puerto (8002) que PaddleOCR. No se pueden ejecutar simultáneamente. Por esta razón, existe un archivo docker-compose separado para EasyOCR.</span></i></p>
<p class="MsoNormal"><span lang="ES"><b>Imagen Docker:</b> <span style="font-family:Consolas;font-size:10pt">seryus.ddns.net/unir/easyocr-gpu</span>(https://seryus.ddns.net/unir/-/packages/container/easyocr-gpu/latest)</span></p>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word">cd src/easyocr_service
# GPU (usar archivo separado para evitar conflicto de puerto)
docker compose up -d</pre>
</div>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Verificar Estado del Servicio</span></h3>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word"># Verificar salud del servicio
curl http://localhost:8002/health
# Respuesta esperada:
# {"status": "ok", "model_loaded": true, "gpu_name": "NVIDIA GeForce RTX 3060"}</pre>
</div>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.5 Uso de la API OCR</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Evaluar Dataset Completo</span></h3>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word"># PaddleOCR - Evaluación completa
curl -X POST http://localhost:8002/evaluate_full \
-H "Content-Type: application/json" \
-d '{
"pdf_folder": "/app/dataset",
"save_output": true
}'</pre>
</div>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Evaluar con Hiperparámetros Optimizados</span></h3>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word"># PaddleOCR con configuración óptima
curl -X POST http://localhost:8002/evaluate_full \
-H "Content-Type: application/json" \
-d '{
"pdf_folder": "/app/dataset",
"use_doc_orientation_classify": true,
"use_doc_unwarping": false,
"textline_orientation": true,
"text_det_thresh": 0.0462,
"text_det_box_thresh": 0.4862,
"text_det_unclip_ratio": 0.0,
"text_rec_score_thresh": 0.5658,
"save_output": true
}'</pre>
</div>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.6 Ajuste de Hiperparámetros con Ray Tune</span></h2>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Ejecutar Ajuste</span></h3>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word">cd src
# Activar entorno virtual
source ../.venv/bin/activate
# PaddleOCR (64 muestras)
python -c "
from raytune_ocr import *
ports = [8002]
check_workers(ports, 'PaddleOCR')
trainable = create_trainable(ports, paddle_ocr_payload)
results = run_tuner(trainable, PADDLE_OCR_SEARCH_SPACE, num_samples=64)
analyze_results(results, prefix='raytune_paddle', config_keys=PADDLE_OCR_CONFIG_KEYS)
"</pre>
</div>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Servicios y Puertos</span></h3>
<a name="_Ref_Tab57"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->57<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Servicios Docker y puertos.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Servicio</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Puerto</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Script de Ajuste</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Nota</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8002</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">paddle_ocr_payload</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DocTR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8003</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">doctr_payload</span></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">-</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8002</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><span style="font-family:Consolas;font-size:10pt">easyocr_payload</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Conflicto con PaddleOCR</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoQuote"><i><span lang="ES"><b>Nota:</b> Debido a limitaciones de recursos GPU (VRAM insuficiente para ejecutar múltiples modelos OCR simultáneamente), solo se ejecuta un servicio a la vez. PaddleOCR y EasyOCR comparten el puerto 8002. Para cambiar de servicio, detener el actual con <span style="font-family:Consolas;font-size:10pt">docker compose down</span>.</span></i></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.7 Métricas de Rendimiento</span></h2>
<p class="MsoNormal"><span lang="ES">Esta sección presenta los resultados completos de las evaluaciones comparativas y del ajuste de hiperparámetros realizado con Ray Tune sobre los tres servicios OCR evaluados.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Comparativa General de Servicios</span></h3>
<a name="_Ref_Tab58"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->58<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Comparativa de servicios OCR en dataset de 45 páginas (GPU RTX 3060).</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Servicio</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">WER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tiempo/Página</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Tiempo Total</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">VRAM</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>PaddleOCR (Mobile)</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>7.76%</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>11.62%</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.58s</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">32.0s</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.06 GB</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">11.23%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">36.36%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">1.88s</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">88.5s</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~2 GB</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DocTR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">12.06%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">42.01%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.50s</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">28.4s</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~1 GB</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_paddle.md</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_easyocr.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_easyocr.md</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_doctr.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_doctr.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="ES"><b>Ganador:</b> PaddleOCR (Mobile) - Mejor precisión (7.76% CER) con velocidad competitiva y mínimo consumo de VRAM.</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Resultados de Ajuste de Hiperparámetros</span></h3>
<p class="MsoNormal"><span lang="ES">Se ejecutaron 64 trials por servicio utilizando Ray Tune con Optuna sobre las páginas 5-10 del primer documento.</span></p>
<a name="_Ref_Tab59"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->59<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Resultados del ajuste de hiperparámetros por servicio.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Servicio</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CER Base</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CER Ajustado</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Mejora</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Mejor Trial (5 páginas)</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>PaddleOCR</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">8.85%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>7.72%</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>12.8%</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>0.79%</b></span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DocTR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">12.06%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">12.07%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">7.43%</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">11.23%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">11.14%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.8%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">5.83%</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_paddle.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_paddle.md</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_easyocr.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_easyocr.md</span></a>, <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/docs/metrics/metrics_doctr.md"><span style="font-family:Consolas;font-size:10pt">docs/metrics/metrics_doctr.md</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<p class="MsoQuote"><i><span lang="ES"><b>Nota sobre sobreajuste:</b> La diferencia entre los resultados del mejor trial (subconjunto de 5 páginas) y el dataset completo (45 páginas) indica sobreajuste parcial a las páginas de ajuste. Un subconjunto más amplio mejoraría la generalización.</span></i></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Distribución de trials por rango de CER (PaddleOCR)</span></h3>
<a name="_Ref_Tab60"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->60<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Distribución de trials por rango de CER.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Rango CER</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Número de trials</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Porcentaje</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">&lt; 2%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">43</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">67.2%</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">2% - 5%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">10</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">15.6%</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">5% - 10%</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">11</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">17.2%</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">&gt; 10%</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.0%</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Fig17"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->17<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Distribución de trials por rango de CER (PaddleOCR)</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Distribución de trials por rango de CER (PaddleOCR)" height="407" src="figures/figura_17.png" style="width:424.5pt;height:305.25pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Configuración Óptima PaddleOCR</span></h3>
<p class="MsoNormal"><span lang="ES">La siguiente configuración logró el mejor rendimiento en el ajuste de hiperparámetros:</span></p>
<div style="background:#E6F4F9;border-top:solid #0098CD .5pt;border-bottom:solid #0098CD .5pt;padding:8pt 12pt;margin:6pt 0">
<pre style="font-family:Consolas,monospace;font-size:9pt;color:#333333;margin:0;white-space:pre-wrap;word-wrap:break-word">{
"use_doc_orientation_classify": true,
"use_doc_unwarping": false,
"textline_orientation": true,
"text_det_thresh": 0.0462,
"text_det_box_thresh": 0.4862,
"text_det_unclip_ratio": 0.0,
"text_rec_score_thresh": 0.5658
}</pre>
</div>
<p class="MsoNormal"><span lang="ES"><b>Hallazgos clave:</b></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">textline_orientation=true</span>: Crítico para documentos con secciones y encabezados</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_orientation_classify=true</span>: Mejora detección de orientación</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">use_doc_unwarping=false</span>: Innecesario para PDFs digitales</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt">text_det_thresh</span> bajo (0.0462): Detección más sensible mejora resultados</span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Rendimiento CPU vs GPU</span></h3>
<a name="_Ref_Tab61"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->61<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Comparación de rendimiento CPU vs GPU (PaddleOCR).</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Métrica</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">CPU</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">GPU (RTX 3060)</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Aceleración</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Tiempo/Página</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">69.4s</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">0.84s</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>82x más rápido</b></span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">45 páginas</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~52 min</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">~38 seg</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>82x más rápido</b></span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Datos de tiempo CPU de <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune_paddle_subproc_results_20251207_192320.csv"><span style="font-family:Consolas;font-size:10pt">src/raytune_paddle_subproc_results_20251207_192320.csv</span></a> y tiempos de GPU en trials de ajuste. Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<a name="_Ref_Fig18"></a><p class="MsoCaption" style="text-align:center;mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Figura <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Figura \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->18<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Tiempo de procesamiento: CPU vs GPU (segundos/página)</span></i></p>
<p class="MsoNormal" style="text-align:center;mso-keep-with-next:always"><span lang="ES"><img alt="Tiempo de procesamiento: CPU vs GPU (segundos/página)" height="404" src="figures/figura_18.png" style="width:424.5pt;height:303.0pt;display:block;margin:0 auto" width="566"/></span></p>
<p class="Piedefoto-tabla" style="margin-left:0cm;text-align:center"><span lang="ES">Fuente: <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/raytune_paddle_subproc_results_20251207_192320.csv"><span style="font-family:Consolas;font-size:10pt">src/raytune_paddle_subproc_results_20251207_192320.csv</span></a> y <a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a>. Leyenda: Aceleración de 82× con GPU. El procesamiento de una página pasa de 69.4s (CPU) a 0.84s (GPU).</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Análisis de Errores por Servicio</span></h3>
<a name="_Ref_Tab62"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->62<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Tipos de errores identificados por servicio OCR.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Servicio</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Fortalezas</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Debilidades</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">¿Fine-tuning recomendado?</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><b>PaddleOCR</b></span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Preserva estructura, buen manejo de español</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Errores menores de acentos</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">No (ya excelente)</span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DocTR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Más rápido</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Pierde estructura, omite TODOS los diacríticos</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Sí (para diacríticos)</span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Modelo correcto para español</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Caracteres espurios, confunde <span style="font-family:Consolas;font-size:10pt">o</span>/<span style="font-family:Consolas;font-size:10pt">0</span></span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">Sí (problemas del detector)</span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Análisis manual del debugset. Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h3 style="mso-list:l22 level3 lfo18"><span lang="ES" style="text-transform:none">Archivos de Resultados</span></h3>
<p class="MsoNormal"><span lang="ES">Los resultados crudos de los 64 trials por servicio están disponibles en el repositorio:</span></p>
<a name="_Ref_Tab63"></a><p class="MsoCaption" style="mso-keep-with-next:always"><b><span lang="ES" style="font-size:12.0pt;line-height:150%">Tabla <!--[if supportFields]><span style='mso-element:field-begin'></span> SEQ Tabla \* ARABIC <span style='mso-element:field-separator'></span><![endif]-->63<!--[if supportFields]><span style='mso-element:field-end'></span><![endif]-->.</span></b><span lang="ES" style="font-size:12.0pt;line-height:150%"> </span><i><span lang="ES" style="font-size:12.0pt;line-height:150%">Ubicación de archivos de resultados.</span></i></p>
<div align="center" style="page-break-inside:avoid"><table align="center" border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse:collapse;margin-left:auto;margin-right:auto;mso-table-style-name:'Plain Table 1'"><tr><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Servicio</span></b></p></td><td style="border-top:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><b><span lang="ES">Archivo CSV</span></b></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">PaddleOCR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_paddle_results_20260119_122609.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_paddle_results_20260119_122609.csv</span></a></span></p></td></tr><tr><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">DocTR</span></p></td><td style="border:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_doctr_results_20260119_121445.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_doctr_results_20260119_121445.csv</span></a></span></p></td></tr><tr><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES">EasyOCR</span></p></td><td style="border-top:none;border-bottom:solid windowtext 1.0pt;border-left:none;border-right:none;padding:5px"><p class="MsoNormal" style="margin:0;text-align:center"><span lang="ES"><a href="https://seryus.ddns.net/unir/MastersThesis/src/branch/main/src/results/raytune_easyocr_results_20260119_120204.csv"><span style="font-family:Consolas;font-size:10pt">src/results/raytune_easyocr_results_20260119_120204.csv</span></a></span></p></td></tr></table></div>
<p class="Piedefoto-tabla" style="margin-left:0cm"><span lang="ES">Fuente: Elaboración propia.</span></p>
<p class="MsoNormal"><span lang="ES"><o:p> </o:p></span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.8 Fuentes de precios cloud</span></h2>
<p class="MsoNormal"><span lang="ES">Las tablas de costos cloud se basan en las páginas oficiales de precios. Se consultaron en enero de 2026.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">AWS EC2 g4dn.xlarge: https://aws.amazon.com/ec2/instance-types/g4/</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Google Colab Pro: https://colab.research.google.com/signup</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Google Colab Pro+: https://colab.research.google.com/signup</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.9 Requisitos documentados por dependencias</span></h2>
<p class="MsoNormal"><span lang="ES">Requisitos extraidos de la documentacion oficial de las dependencias usadas:</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">DocTR: requiere Python 3.10 o superior.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">DocTR Docker: imagenes basadas en CUDA 12.2, el host debe ser al menos 12.2.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">PaddleOCR: soporte de inferencia con CUDA 12.</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">PaddleOCR: soporte de Python 3.12 en dependencias.</span></p>
<h2 style="mso-list:l22 level2 lfo18"><span lang="ES" style="text-transform:none">A.10 Licencia</span></h2>
<p class="MsoNormal"><span lang="ES">El código se distribuye bajo licencia MIT.</span></p></div>
<div style="mso-element:footnote-list"><?if !supportFootnotes?><br clear="all"/>
<hr align="left" size="1" width="33%"/>
<?endif?>
<div id="ftn1" style="mso-element:footnote">
</div>
</div>
</body>
</html>