рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдПрдЖрдИ (Python) рд╡рд╛рд▓реЗ рд╕реНрдкреЗрд╢рд▓ рдкреНрд░реЛрд╕реЗрд╕рд░

1. рдкрд░рд┐рдЪрдп

рдЗрд╕ рдХреЛрдбрд▓реИрдм рдореЗрдВ, рдЖрдкрдХреЛ Python рдХреА рдорджрдж рд╕реЗ рдЦрд╛рд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреА рдХреИрдЯрдЧрд░реА рддрдп рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Document AI рдХреЗ рдЦрд╛рд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛. рдбреЗрдЯрд╛ рдХреА рдХреИрдЯрдЧрд░реА рддрдп рдХрд░рдиреЗ рдФрд░ рдЙрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ рдПрдХ PDF рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗ. рдЗрд╕рдореЗрдВ рдЗрдирд╡реЙрдЗрд╕, рд░рд╕реАрдж, рдФрд░ рдмрд┐рдЬрд▓реА, рдкрд╛рдиреА рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдЗрдХрд╛рдИ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ рдЗрдирд╡реЙрдЗрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗ.

рдпрд╣ рдкреНрд░реЛрд╕реЗрд╕ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб, рдРрд╕реЗ рдХрд┐рд╕реА рднреА рдЦрд╛рд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ.

реЫрд░реВрд░реА рд╢рд░реНрддреЗрдВ

рдпрд╣ рдХреЛрдбрд▓реИрдм, рдЕрдиреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдЖрдИ рдХреЛрдбрд▓реИрдм рдореЗрдВ рдореМрдЬреВрдж рдХреЙрдиреНрдЯреЗрдВрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирддрд╛ рд╣реИ.

рд╣рдорд╛рд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдХреЛрдбрд▓реИрдм (рдХреЛрдб рдмрдирд╛рдирд╛ рд╕реАрдЦрдирд╛) рдкреВрд░рд╛ рдХрд░реЗрдВ:

рдЖрдкрдХреЛ рдЗрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реЗрдЧреА

  • рдЦрд╛рд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд▓рд┐рдЯ рдкреЙрдЗрдВрдЯ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреИрдЯрдЧрд░реА рдореЗрдВ рдмрд╛рдВрдЯрдиреЗ рдХрд╛ рддрд░реАрдХрд╛.
  • рдЦрд╛рд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ, рд╕реНрдХреАрдорд╛ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдЗрдХрд╛рдЗрдпрд╛рдВ рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛.

рдЖрдкрдХреЛ рдЗрди рдЪреАрдЬрд╝реЛрдВ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрдЧреА

  • Google Cloud рдкреНрд░реЛрдЬреЗрдХреНрдЯ
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдЬреИрд╕реЗ рдХрд┐ Chrome рдпрд╛ Firefox
  • Python 3 рдХреА рдЬрд╛рдирдХрд╛рд░реА

2. рд╕реЗрдЯ рдЕрдк рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ

рдХреЛрдбрд▓реИрдм рдХреЗ рдЗрд╕ рдЯреВрд▓ рдореЗрдВ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдХреЛрдбрд▓реИрдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢реБрд░реБрдЖрддреА рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рджрд┐рдП рдЧрдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдПрдЖрдИ рдХреЛ рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ.

рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХреГрдкрдпрд╛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ:

рдЖрдкрдХреЛ Pandas рднреА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ Python рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рд▓реЛрдХрдкреНрд░рд┐рдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ.

pip3 install --upgrade pandas

3. рдЦрд╛рд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ рдмрдирд╛рдПрдВ

рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рд╣реЛрдВрдЧреЗ.

  1. рдХрдВрд╕реЛрд▓ рдореЗрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдЖрдИ рдкреНрд▓реИрдЯрдлрд╝реЙрд░реНрдо рдХреА рдЦрд╛рд╕ рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рдЬрд╛рдПрдВ
  2. рдкреНрд░реЛрд╕реЗрд╕рд░ рдмрдирд╛рдПрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ. рдиреАрдЪреЗ рд╕реНрдХреНрд░реЛрд▓ рдХрд░рдХреЗ рдЦрд╛рд╕ рдкреНрд░реЛрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдкреНрд░реЛрдХреНрдпреЛрд░рдореЗрдВрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реНрдкреНрд▓рд┐рдЯрд░ рдЪреБрдиреЗрдВ.
  3. рдЗрд╕реЗ "рдХреЛрдбрд▓реИрдм-рдкреНрд░реЛрдХреНрдпреЛрд░рдореЗрдВрдЯ-рд╕реНрдкреНрд▓рд┐рдЯрд░" рдирд╛рдо рджреЗрдВ (рдпрд╛ рдХреБрдЫ рдФрд░, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП) рдФрд░ рд╕реВрдЪреА рд╕реЗ рдЕрдкрдирд╛ рд╕рдмрд╕реЗ рдирдЬрд╝рджреАрдХреА рдЗрд▓рд╛рдХрд╛ рдЪреБрдиреЗрдВ.
  4. рдЕрдкрдирд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрдирд╛рдПрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
  5. рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрдИрдбреА рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ. рдЖрдкрдХреЛ рдмрд╛рдж рдореЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛.
  6. рдЗрдирд╡реЙрдЗрд╕ рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рджреВрд╕рд░реЗ рд╕реЗ рдЫрдареЗ рдЪрд░рдг рддрдХ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛрд╣рд░рд╛рдПрдВ. рдЗрд╕реЗ "codelab-invoice-parser" рдХреЗ рдирд╛рдо рд╕реЗ рднреА рдЬрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

Console рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрд▓реЛрдб рдХрд░рдХреЗ, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЗрдирд╡реЙрдЗрд╕ рдкрд╛рд░реНрд╕рд░ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ.

'рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ' рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЗрдирд╡реЙрдЗрд╕ рдЪреБрдиреЗрдВ. рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЗрдирд╡реЙрдЗрд╕ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕ рд╕реИрдВрдкрд▓ рдЗрдирд╡реЙрдЗрд╕ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.

google_invoice.png

рдЖрдкрдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

InvoiceParser.png

4. рд╕реИрдВрдкрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рдЗрд╕ рд▓реИрдм рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реИрдВрдкрд▓ рдХреЗ рддреМрд░ рдкрд░ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИрдВ.

рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХреА рдорджрдж рд╕реЗ, PDF рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЙрдиреНрд╣реЗрдВ Cloud Shell рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ.

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЗрдВ gsutil рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ, рд╣рдорд╛рд░реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ Cloud Storage рдмрдХреЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.

gsutil cp gs://cloud-samples-data/documentai/codelabs/specialized-processors/procurement_multi_document.pdf .

gsutil cp gs://cloud-samples-data/documentai/codelabs/specialized-processors/google_invoice.pdf .

5. рд╡рд░реНрдЧреАрдХрд░рдг рдХрд░реЗрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдмрд╛рдВрдЯреЛ

рдЗрд╕ рдЪрд░рдг рдореЗрдВ, рдПрдХ рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдкреЗрдЬреЛрдВ рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓реЙрдЬрд┐рдХрд▓ рд╕реНрдкреНрд▓рд┐рдЯ рдкреЙрдЗрдВрдЯ рдХреА рдХреИрдЯрдЧрд░реА рддрдп рдХрд░рдиреЗ рдФрд░ рдЙрдирдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдирд▓рд╛рдЗрди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.

рдЕрдЧрд░ рдЖрдкрдХреЛ рдПрдХ рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рднреЗрдЬрдиреА рд╣реИрдВ рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рд╛рдЗрдЬрд╝, рдСрдирд▓рд╛рдЗрди рдкреНрд░реЛрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬрд╝реНрдпрд╛рджрд╛ рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдкреЗрдЬреЛрдВ рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рд╣реИ, рддрдм рднреА рдмреИрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, Document AI рдУрд╕реАрдЖрд░ рдХреЛрдбрд▓реИрдм рдореЗрдВ рдЬрд╛рдПрдВ.

рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рдХреЛрдб, рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрдИрдбреА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреИрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ.

рдкреНрд░реЛрдХреНрдпреЛрд░рдореЗрдВрдЯ рд╕реНрдкреНрд▓рд┐рдЯрд░/рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░

classification.py рдирд╛рдо рдХреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ.

PROCUREMENT_SPLITTER_ID рдХреА рдЬрдЧрд╣ рдЙрд╕ рдЖрдИрдбреА рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдкреНрд░реЛрдХреНрдпреЛрд░рдореЗрдВрдЯ рд╕реНрдкреНрд▓рд┐рдЯрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдерд╛. YOUR_PROJECT_ID рдФрд░ YOUR_PROJECT_LOCATION рдХреЛ рдЕрдкрдиреЗ Cloud рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдИрдбреА рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдЬрдЧрд╣ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдмрджрд▓реЗрдВ.

classification.py

import pandas as pd
from google.cloud import documentai_v1 as documentai


def online_process(
    project_id: str,
    location: str,
    processor_id: str,
    file_path: str,
    mime_type: str,
) -> documentai.Document:
    """
    Processes a document using the Document AI Online Processing API.
    """

    opts = {"api_endpoint": f"{location}-documentai.googleapis.com"}

    # Instantiates a client
    documentai_client = documentai.DocumentProcessorServiceClient(client_options=opts)

    # The full resource name of the processor, e.g.:
    # projects/project-id/locations/location/processor/processor-id
    # You must create new processors in the Cloud Console first
    resource_name = documentai_client.processor_path(project_id, location, processor_id)

    # Read the file into memory
    with open(file_path, "rb") as file:
        file_content = file.read()

    # Load Binary Data into Document AI RawDocument Object
    raw_document = documentai.RawDocument(content=file_content, mime_type=mime_type)

    # Configure the process request
    request = documentai.ProcessRequest(name=resource_name, raw_document=raw_document)

    # Use the Document AI client to process the sample form
    result = documentai_client.process_document(request=request)

    return result.document


PROJECT_ID = "YOUR_PROJECT_ID"
LOCATION = "YOUR_PROJECT_LOCATION"  # Format is 'us' or 'eu'
PROCESSOR_ID = "PROCUREMENT_SPLITTER_ID"  # Create processor in Cloud Console

# The local file in your current working directory
FILE_PATH = "procurement_multi_document.pdf"
# Refer to https://cloud.google.com/document-ai/docs/processors-list
# for supported file types
MIME_TYPE = "application/pdf"

document = online_process(
    project_id=PROJECT_ID,
    location=LOCATION,
    processor_id=PROCESSOR_ID,
    file_path=FILE_PATH,
    mime_type=MIME_TYPE,
)

print("Document processing complete.")

types = []
confidence = []
pages = []

# Each Document.entity is a classification
for entity in document.entities:
    classification = entity.type_
    types.append(classification)
    confidence.append(f"{entity.confidence:.0%}")

    # entity.page_ref contains the pages that match the classification
    pages_list = []
    for page_ref in entity.page_anchor.page_refs:
        pages_list.append(page_ref.page)
    pages.append(pages_list)

# Create a Pandas Dataframe to print the values in tabular format.
df = pd.DataFrame({"Classification": types, "Confidence": confidence, "Pages": pages})

print(df)

рдЖрдкрдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

$ python3 classification.py
Document processing complete.
         Classification Confidence Pages
0     invoice_statement       100%   [0]
1     receipt_statement        98%   [1]
2                 other        81%   [2]
3     utility_statement       100%   [3]
4  restaurant_statement       100%   [4]

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░реЛрдХреНрдпреЛрд░рдореЗрдВрдЯ рд╕реНрдкреНрд▓рд┐рдЯрд░/рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рдиреЗ рдкреЗрдЬ 0-1 рдФрд░ 3-4 рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЯрд╛рдЗрдк рдХреА рд╕рд╣реА рдкрд╣рдЪрд╛рди рдХреА рд╣реИ.

рдкреЗрдЬ 2 рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдореЗрдбрд┐рдХрд▓ рдЗрдирдЯреЗрдХ рдлрд╝реЙрд░реНрдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рдиреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕рдХреА рдкрд╣рдЪрд╛рди other рдХреЗ рддреМрд░ рдкрд░ рдХреА рд╣реИ.

6. рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓реЗрдВ

рдЕрдм рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд╕реНрдХреАрдорд╛ рд╡рд╛рд▓реА рдЗрдХрд╛рдЗрдпрд╛рдВ рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ. рдЗрдирдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдбреЗрдВрд╕ рд╕реНрдХреЛрд░, рдкреНрд░реЙрдкрд░реНрдЯреА, рдФрд░ рдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝ рдХреА рдЧрдИ рд╡реИрд▓реНрдпреВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ.

рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рдХреЛрдб, рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдХреЗ рдХреЛрдб рдЬреИрд╕рд╛ рд╣реА рд╣реИ. рдЗрд╕реЗ рдСрдирд▓рд╛рдЗрди рдпрд╛ рдПрдХ рд╕рд╛рде рдХрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.

рд╣рдо рдЗрдХрд╛рдЗрдпреЛрдВ рд╕реЗ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдРрдХреНрд╕реЗрд╕ рдХрд░реЗрдВрдЧреЗ:

  • рдЗрдХрд╛рдИ рдкреНрд░рдХрд╛рд░
    • (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП invoice_date, receiver_name, total_amount)
  • рдЕрдкрд░рд┐рд╖реНрдХреГрдд рдореВрд▓реНрдп
    • рдбреЗрдЯрд╛ рдХреА рд╡реЗ рд╡реИрд▓реНрдпреВ рдЬреЛ рдУрд░рд┐рдЬрдирд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджреА рдЧрдИ рд╣реИрдВ.
  • рд╕рд╛рдорд╛рдиреНрдпрд┐рдд рдорд╛рди
    • рдЕрдЧрд░ рд▓рд╛рдЧреВ рд╣реЛ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╕реНрдЯреИрдВрдбрд░реНрдб рдлрд╝реЙрд░реНрдореИрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рд╡реИрд▓реНрдпреВ.
    • рдЗрд╕рдореЗрдВ Enterprise рдиреЙрд▓реЗрдЬ рдЧреНрд░рд╛рдлрд╝ рд╕реЗ рдмреЗрд╣рддрд░ рдЬрд╛рдирдХрд╛рд░реА рднреА рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ
  • рдХреЙрдиреНрдлрд╝рд┐рдбреЗрдВрд╕ рд╡реИрд▓реНрдпреВ
    • "рдХреНрдпреЛрдВ рдирд╣реАрдВ" рдореЙрдбрд▓ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реИрд▓реНрдпреВ рд╕рдЯреАрдХ рд╣реИрдВ.

рдЗрдХрд╛рдИ рдХреЗ рдХреБрдЫ рдЯрд╛рдЗрдк, рдЬреИрд╕реЗ рдХрд┐ line_item рдореЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА рднреА рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ. рдпреЗ рдкреНрд░реЙрдкрд░реНрдЯреА line_item/unit_price рдФрд░ line_item/description рдЬреИрд╕реА рдиреЗрд╕реНрдЯ рдХреА рдЧрдИ рдЗрдХрд╛рдЗрдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ.

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рдлрд╝реНрд▓реИрдЯ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХреЗ.

рдЗрдирд╡реЙрдЗрд╕ рдкрд╛рд░реНрд╕рд░

extraction.py рдирд╛рдо рдХреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ.

INVOICE_PARSER_ID рдХреА рдЬрдЧрд╣ рдЙрд╕ рдЗрдирд╡реЙрдЗрд╕ рдкрд╛рд░реНрд╕рд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЖрдИрдбреА рдбрд╛рд▓реЗрдВ рдЬреЛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдерд╛ рдФрд░ google_invoice.pdf рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ

extraction.py

import pandas as pd
from google.cloud import documentai_v1 as documentai


def online_process(
    project_id: str,
    location: str,
    processor_id: str,
    file_path: str,
    mime_type: str,
) -> documentai.Document:
    """
    Processes a document using the Document AI Online Processing API.
    """

    opts = {"api_endpoint": f"{location}-documentai.googleapis.com"}

    # Instantiates a client
    documentai_client = documentai.DocumentProcessorServiceClient(client_options=opts)

    # The full resource name of the processor, e.g.:
    # projects/project-id/locations/location/processor/processor-id
    # You must create new processors in the Cloud Console first
    resource_name = documentai_client.processor_path(project_id, location, processor_id)

    # Read the file into memory
    with open(file_path, "rb") as file:
        file_content = file.read()

    # Load Binary Data into Document AI RawDocument Object
    raw_document = documentai.RawDocument(content=file_content, mime_type=mime_type)

    # Configure the process request
    request = documentai.ProcessRequest(name=resource_name, raw_document=raw_document)

    # Use the Document AI client to process the sample form
    result = documentai_client.process_document(request=request)

    return result.document


PROJECT_ID = "YOUR_PROJECT_ID"
LOCATION = "YOUR_PROJECT_LOCATION"  # Format is 'us' or 'eu'
PROCESSOR_ID = "INVOICE_PARSER_ID"  # Create processor in Cloud Console

# The local file in your current working directory
FILE_PATH = "google_invoice.pdf"
# Refer to https://cloud.google.com/document-ai/docs/processors-list
# for supported file types
MIME_TYPE = "application/pdf"

document = online_process(
    project_id=PROJECT_ID,
    location=LOCATION,
    processor_id=PROCESSOR_ID,
    file_path=FILE_PATH,
    mime_type=MIME_TYPE,
)

types = []
raw_values = []
normalized_values = []
confidence = []

# Grab each key/value pair and their corresponding confidence scores.
for entity in document.entities:
    types.append(entity.type_)
    raw_values.append(entity.mention_text)
    normalized_values.append(entity.normalized_value.text)
    confidence.append(f"{entity.confidence:.0%}")

    # Get Properties (Sub-Entities) with confidence scores
    for prop in entity.properties:
        types.append(prop.type_)
        raw_values.append(prop.mention_text)
        normalized_values.append(prop.normalized_value.text)
        confidence.append(f"{prop.confidence:.0%}")

# Create a Pandas Dataframe to print the values in tabular format.
df = pd.DataFrame(
    {
        "Type": types,
        "Raw Value": raw_values,
        "Normalized Value": normalized_values,
        "Confidence": confidence,
    }
)

print(df)

рдЖрдкрдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рдРрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

$ python3 extraction.py
                     Type                                         Raw Value Normalized Value Confidence
0                     vat                                         $1,767.97                        100%
1          vat/tax_amount                                         $1,767.97      1767.97 USD         0%
2            invoice_date                                      Sep 24, 2019       2019-09-24        99%
3                due_date                                      Sep 30, 2019       2019-09-30        99%
4            total_amount                                         19,647.68         19647.68        97%
5        total_tax_amount                                         $1,767.97      1767.97 USD        92%
6              net_amount                                         22,379.39         22379.39        91%
7           receiver_name                                       Jane Smith,                         83%
8              invoice_id                                         23413561D                         67%
9        receiver_address  1600 Amphitheatre Pkway\nMountain View, CA 94043                         66%
10         freight_amount                                           $199.99       199.99 USD        56%
11               currency                                                 $              USD        53%
12          supplier_name                                        John Smith                         19%
13         purchase_order                                         23413561D                          1%
14        receiver_tax_id                                         23413561D                          0%
15          supplier_iban                                         23413561D                          0%
16              line_item                   9.99 12 12 ft HDMI cable 119.88                        100%
17   line_item/unit_price                                              9.99             9.99        90%
18     line_item/quantity                                                12               12        77%
19  line_item/description                                  12 ft HDMI cable                         39%
20       line_item/amount                                            119.88           119.88        92%
21              line_item           12 399.99 27" Computer Monitor 4,799.88                        100%
22     line_item/quantity                                                12               12        80%
23   line_item/unit_price                                            399.99           399.99        91%
24  line_item/description                              27" Computer Monitor                         15%
25       line_item/amount                                          4,799.88          4799.88        94%
26              line_item                Ergonomic Keyboard 12 59.99 719.88                        100%
27  line_item/description                                Ergonomic Keyboard                         32%
28     line_item/quantity                                                12               12        76%
29   line_item/unit_price                                             59.99            59.99        92%
30       line_item/amount                                            719.88           719.88        94%
31              line_item                     Optical mouse 12 19.99 239.88                        100%
32  line_item/description                                     Optical mouse                         26%
33     line_item/quantity                                                12               12        78%
34   line_item/unit_price                                             19.99            19.99        91%
35       line_item/amount                                            239.88           239.88        94%
36              line_item                      Laptop 12 1,299.99 15,599.88                        100%
37  line_item/description                                            Laptop                         83%
38     line_item/quantity                                                12               12        76%
39   line_item/unit_price                                          1,299.99          1299.99        90%
40       line_item/amount                                         15,599.88         15599.88        94%
41              line_item              Misc processing fees 899.99 899.99 1                        100%
42  line_item/description                              Misc processing fees                         22%
43   line_item/unit_price                                            899.99           899.99        91%
44       line_item/amount                                            899.99           899.99        94%
45     line_item/quantity                                                 1                1        63%

7. рд╡реИрдХрд▓реНрдкрд┐рдХ: рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрдЬрд╝рдорд╛рдПрдВ

рдЖрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреА рдХреИрдЯрдЧрд░реА рддрдп рдХрд░рдиреЗ рдФрд░ рдЗрдирд╡реЙрдЗрд╕ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдХреНрдпреЛрд░рдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдЖрдИ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ. рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдЖрдИ, рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдЕрдиреНрдп рдЦрд╛рд╕ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

рдпрд╣реА рддрд░реАрдХрд╛ рдЕрдкрдирд╛рдПрдВ рдФрд░ рдХрд┐рд╕реА рдЦрд╛рд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рдХреЛрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ.

рдЕрдЧрд░ рдЖрдк рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖ рд╕рдорд╛рдзрд╛рди рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдиреНрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рдирдореВрдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рд╕рд╛рде рд▓реИрдм рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ.

рдирдореВрдиреЗ рдХреЗ рддреМрд░ рдкрд░ рджрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝

рдпрд╣рд╛рдВ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рд╕реИрдВрдкрд▓ рджрд┐рдП рдЧрдП рд╣реИрдВ. рдЗрдирдХреА рдорджрдж рд╕реЗ, рдЕрдиреНрдп рдЦрд╛рд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЖрдЬрд╝рдорд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.

рд╕рдорд╛рдзрд╛рди

рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЯрд╛рдЗрдк

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝

рдкрд╣рдЪрд╛рди

рдЕрдореЗрд░рд┐рдХрд╛ рдХрд╛ рдбреНрд░рд╛рдЗрд╡рд┐рдВрдЧ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкрд╛рд░реНрд╕рд░

рд╡рд╛рд╣рди рдХреЗ рд▓рд┐рдП рдХрд░реНреЫ рд▓реЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛

рдХрд╝рд░реНрдЬрд╝ рдкрд░ рд╕реНрдкреНрд▓рд┐рдЯрд░ рдФрд░ рдбреЗрдЯрд╛ рдХреА рдХреИрдЯрдЧрд░реА рддрдп рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЯреВрд▓

рд╡рд╛рд╣рди рдХреЗ рд▓рд┐рдП рдХрд░реНреЫ рд▓реЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛

W9 рдкрд╛рд░реНрд╕рд░

рд╕рдордЭреМрддреЗ

рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдкрд╛рд░реНрд╕рд░

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ, рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдиреНрдп рд╕реИрдВрдкрд▓ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ.

8. рдмрдзрд╛рдИ рд╣реЛ

рдмрдзрд╛рдИ рд╣реЛ, рдЖрдкрдиреЗ рдЦрд╛рд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдЙрд╕рдХреА рдХреИрдЯрдЧрд░реА рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдЖрдИ (AI) рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ. рд╣рдо рдЖрдкрдХреЛ рдЕрдиреНрдп рдЦрд╛рд╕ рддрд░рд╣ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ.

рдорд┐рдЯрд╛рдирд╛

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ Google Cloud рдЦрд╛рддреЗ рдкрд░ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╢реБрд▓реНрдХ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП:

  • Cloud Console рдореЗрдВ, рд╕рдВрд╕рд╛рдзрди рдореИрдиреЗрдЬ рдХрд░реЗрдВ рдкреЗрдЬ рдкрд░ рдЬрд╛рдПрдВ.
  • рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╕реВрдЪреА рдореЗрдВ, рдЕрдкрдирд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪреБрдиреЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, 'рдорд┐рдЯрд╛рдПрдВ' рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.
  • рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдореЗрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдИрдбреА рдЯрд╛рдЗрдк рдХрд░реЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП 'рд╢рдЯ рдбрд╛рдЙрди рдХрд░реЗрдВ' рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.

рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдиреЗрдВ

рдЗрди рдлрд╝реЙрд▓реЛ-рдЕрдк рдХреЛрдбрд▓реИрдм рдХреА рдорджрдж рд╕реЗ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдЖрдИ (AI) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдиреЗрдВ.

рд╕рдВрд╕рд╛рдзрди

рд▓рд╛рдЗрд╕реЗрдВрд╕

рдЗрд╕ рдХрд╛рдо рдХреЛ рдХреНрд░рд┐рдПрдЯрд┐рд╡ рдХреЙрдордВрд╕ рдПрдЯреНрд░рд┐рдмреНрдпреВрд╢рди 2.0 рдЬреЗрдирд░рд┐рдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдорд┐рд▓рд╛ рд╣реИ.